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