我缺乏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

最佳答案

您的程序应如下所示:

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

关于php - Perl-SHA1与PHP不匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24007748/

10-13 02:50