为什么Perl和/ bin/sha1会给出不同的结果?
问题描述:
我很困惑,为什么以下返回单独sHA1s为什么Perl和/ bin/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" | 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命令也返回换行符。
+1
echo不是“返回”换行符。它正在输出一个换行符,并且(可能)返回0。 – 2009-12-07 15:48:18
答
Perl给你输入的文字串的散列,而echo则附加一个换行符。如果你告诉echo
不添加一个新行,你会得到相同的结果:
drewfus:~$ perl -MDigest::SHA1 -E'say Digest::SHA1::sha1_hex("foo");'
0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33
drewfus:~$ echo -n "foo" | sha1sum
0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33 -
在这种情况下,总是看串你给他们下一步之前,以确保他们都在你面前一样的东西做摘要。如果必须的话,将它保存到一个文件并进行十六进制转储。 – 2009-12-04 00:37:25