我在perl的经历很缺乏.但是,从我在网上阅读并看到谷歌搜索这个问题; perl的md5,sha1,sha256 ......应该返回与php或任何其他语言相同的哈希值,但不是.
有什么我误解或遗失的东西?
Perl代码:(v5.14.2)
use Digest::SHA 'sha1_hex';
print Digest::SHA->sha1_hex("test");
# outputs e2412033b6d0070b931d01b0d1783b937608eb7f
Run Code Online (Sandbox Code Playgroud)
PHP代码:(v5.4)
echo sha1("test");
//outputs: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
Run Code Online (Sandbox Code Playgroud)
你的程序应该是这样的:
use Digest::SHA 'sha1_hex';
print sha1_hex("test");
Run Code Online (Sandbox Code Playgroud)
要么
use Digest::SHA;
print Digest::SHA::sha1_hex("test"); # note ::
Run Code Online (Sandbox Code Playgroud)
当你打电话时Digest::SHA->sha1_hex("test");,你正在使用所谓的"间接对象"表示法,这相当于sha1_hex("Digest::SHA", "test")·这就是你得到不同哈希的原因:
use Digest::SHA 'sha1_hex';
say sha1_hex("Digest::SHAtest")
# -> e2412033b6d0070b931d01b0d1783b937608eb7f
Run Code Online (Sandbox Code Playgroud)