我有一个包含2列的文件:
user1 password1
user2 password2
...
用户和密码之间用制表符分隔,下一个用户在下一行。
我想检索每个用户的密码,并用其md5哈希替换它。
我知道这个正则表达式可以获取表格+密码,但是我不知道如何在变量中捕获它,因此我可以删除表格并处理我的密码字符串。
\t(.*)$
所以atm我的代码如下所示:
#!/bin/bash
while IFS="" read -r p || [ -n "$p" ]
do
if [[ $p =~ (\t)(.*)$]]; then echo yep ; else echo nope; fi
done < $1
在shell中执行:
#!/usr/bin/env sh
while read -r user passwd; do
md5passwd=$(printf %s "$passwd" | md5sum | cut -c-32)
printf '%s\t%s\n' "$user" "$md5passwd"
done
或者使用将单词拆分为参数而不是cut
:
#!/usr/bin/env sh
while read -r u p; do
# shellcheck disable=SC2046 # intended word splitting
set -- $(printf %s "$p" | md5sum )
printf '%s\t%s\n' "$u" "$1"
done
密码的md5看起来比纯文本密码更安全。您不能忽略md5密码哈希非常弱。您确实不能使用自己的加密技术。
我的意思是真的!不要那样做!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句