在对 openssl 命令进行散列处理时,我似乎遇到了获取正确值的问题。这是我的代码。
IFS=","
while read -ra line;
do
if [ "${line[1]}" != "" ]; then
echo -n "${line[*]},"; echo -n "${line[1]}" | openssl dgst -sha1 | sed 's/^.* //' ;
else
if [ "${line[1]}" == "" ]; then
echo "${line[*]}, Hash Value: None";
fi
fi
done
这是文本文件中第二列的输入,在代码中为“${line[1]}”。
"1376051635"
这就是我运行命令的方式:
./orange.sh < "C:\Documents and Settings\562359\Desktop\Analytics\persons\persons.txt"
输出到屏幕是这样的:
"524786870","1376051635",2483a818fac3e5214697f1ed76d92e2f54d4a277
第三列是第二列的散列值,但它不正确。当我运行这个命令
echo -n "1376051635" | openssl dgst -sha1
我的输出是:
(stdin)= f8d822c6b46a2eb4e35bb4d76b8ce2e336d541e8
这是正确的哈希值。为什么这不起作用它应该如何工作?似乎代码是正确的,但输出的哈希值与应有的完全不同。对此问题的任何帮助将不胜感激。