我正在尝试使用此代码生成哈希值
use Digest::SHA qw(sha1_hex); print sha1_hex("prady@prady.com")
生成的值是
642732893b7d25cf6a47773fa1c4988fac2ff3ad
当我使用自由生成器检查哈希码时
http://sha1-hash-online.waraxe.us/
我得到哈希码为
e49ece87a60590483bb74c24e82f9d64d13d98c1
我通过从字符串中删除@符号来执行相同的测试 我从网站获得匹配的值以及代码。 两者都返回相同的哈希码
08e1698b5818d8fdf0f7b31132c3b44c49671644
代码和网站生成的那些是正确的吗?这是在字符串上使用@符号时的已知行为吗?
答案 0 :(得分:4)
始终使用use strict; use warnings;
!
与您的声明相反,您的字符串中没有@
。
答案 1 :(得分:3)
在双引号字符串中使用@something
被Perl解释为数组名称。如果您使用use warnings;
和use strict;
,就会发现错误。解决方案很简单:转义@
,如下所示:print sha1_hex("some\@where.org")
。或者使用单引号字符串。