为什么Perl和/bin/sha1给出不同的结果?
我不明白为什么下面的返回是分开的为什么Perl和/bin/sha1给出不同的结果?,perl,sha1,Perl,Sha1,我不明白为什么下面的返回是分开的 $ perl -MDigest::SHA1 -E'say Digest::SHA1::sha1_hex("http://i.aultec.com/v/8066/Originals/1FTVX12585NA9832010.jpg");' e1133fa3b7ea0bfb8ffa4d877932ed6c6fa10cef $ echo "http://i.aultec.com/v/8066/Originals/1FTVX12585NA9832010.jpg" | s
$ perl -MDigest::SHA1 -E'say Digest::SHA1::sha1_hex("http://i.aultec.com/v/8066/Originals/1FTVX12585NA9832010.jpg");'
e1133fa3b7ea0bfb8ffa4d877932ed6c6fa10cef
$ echo "http://i.aultec.com/v/8066/Originals/1FTVX12585NA9832010.jpg" | sha1sum
5c3731e83ae0184ed93b595b9f5604863dd331e6 -
哪一个是对的?我做错了吗
$ perl -MDigest::SHA -E'say Digest::SHA::sha1_hex("http://i.aultec.com/v/8066/Originals/1FTVX12585NA9832010.jpg");'
e1133fa3b7ea0bfb8ffa4d877932ed6c6fa10cef
您可以在后续版本中看到摘要是正确的(
digest::SHA
)两者都是正确的。echo命令的末尾包含一个换行符。(perl字符串没有)尝试使用echo-n…
这是一个非常常见的错误,我已经犯过很多次了。echo命令还返回一个换行符。Perl将为您输入的文本字符串提供哈希值,而echo将追加一个换行符。如果您告诉echo不要添加换行符,您将得到相同的结果:
drewfus:~$ perl -MDigest::SHA1 -E'say Digest::SHA1::sha1_hex("foo");'
0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33
drewfus:~$ echo -n "foo" | sha1sum
0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33 -
在这些情况下,在进行下一步之前,请始终查看字符串,以确保它们在进行摘要之前是相同的。将其保存到一个文件中,并在必要时将其转储。echo不会“返回”换行符。它正在输出一个换行符,并且(可能)返回0。