Perl-SHA1与PHP不匹配
我缺乏perl方面的经验。但是,从我在网上读到的和在谷歌上看到的这个问题;perl的md5、sha1、sha256。。。应该返回与php或任何其他语言相同的哈希值,但不是 我有什么误解或遗漏的吗 Perl代码:(v5.14.2) PHP代码:(v5.4)Perl-SHA1与PHP不匹配,php,perl,md5,sha1,Php,Perl,Md5,Sha1,我缺乏perl方面的经验。但是,从我在网上读到的和在谷歌上看到的这个问题;perl的md5、sha1、sha256。。。应该返回与php或任何其他语言相同的哈希值,但不是 我有什么误解或遗漏的吗 Perl代码:(v5.14.2) PHP代码:(v5.4) 您的程序应该如下所示: use Digest::SHA 'sha1_hex'; print sha1_hex("test"); 或 当您调用Digest::SHA->sha1_hex(“test”),您使用的是所谓的“间接对象”表示法,它相当
您的程序应该如下所示:
use Digest::SHA 'sha1_hex';
print sha1_hex("test");
或
当您调用Digest::SHA->sha1_hex(“test”)代码>,您使用的是所谓的“间接对象”表示法,它相当于sha1_hex(“摘要::SHA”,“测试”)
。这就是您得到不同哈希的原因:
use Digest::SHA 'sha1_hex';
say sha1_hex("Digest::SHAtest")
# -> e2412033b6d0070b931d01b0d1783b937608eb7f
$perl-MDigest::SHA=sha1_hex-E'say sha1_hex(“test”)
产生了a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
实际上这是一个直接的方法调用,而不是间接的对象表示法。间接对象表示法是my$result=methodname$object@arguments
,而标准(直接)方法调用类似于my$result=$object->method(@arguments)
。但在这种情况下,这两种方法都不可取,因为sha1_hex
是一种函数而不是一种方法。
use Digest::SHA 'sha1_hex';
print sha1_hex("test");
use Digest::SHA;
print Digest::SHA::sha1_hex("test"); # note ::
use Digest::SHA 'sha1_hex';
say sha1_hex("Digest::SHAtest")
# -> e2412033b6d0070b931d01b0d1783b937608eb7f