Perl - SHA1与PHP不匹配

时间:2014-06-03 05:29:31

标签: php perl md5 sha1

我缺乏perl的经验。但是,从我在网上阅读并看到谷歌搜索这个问题; perl的md5,sha1,sha256 ......应该返回与php或任何其他语言相同的哈希值,但不是。

有什么我误解或遗失的东西吗?

Perl代码:(v5.14.2)

use Digest::SHA 'sha1_hex';
print Digest::SHA->sha1_hex("test");
# outputs e2412033b6d0070b931d01b0d1783b937608eb7f

PHP代码:(v5.4)

echo sha1("test");
//outputs: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3

1 个答案:

答案 0 :(得分:8)

您的计划应如下所示:

use Digest::SHA 'sha1_hex';
print sha1_hex("test");

use Digest::SHA;
print Digest::SHA::sha1_hex("test"); # note ::

当你致电Digest::SHA->sha1_hex("test");时,你正在使用所谓的“间接对象”符号,这相当于sha1_hex("Digest::SHA", "test")·这就是为什么你得到不同的哈希:

use Digest::SHA 'sha1_hex';
say sha1_hex("Digest::SHAtest")
# -> e2412033b6d0070b931d01b0d1783b937608eb7f