Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Perl和/bin/sha1给出不同的结果?_Perl_Sha1 - Fatal编程技术网

为什么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。