1

このコードを使用してハッシュ値を生成しようとしています

use Digest::SHA qw(sha1_hex); print sha1_hex("prady@prady.com")

生成される値は

642732893b7d25cf6a47773fa1c4988fac2ff3ad

無料のジェネレーターを使用してハッシュコードを確認すると

http://sha1-hash-online.waraxe.us/

ハッシュコードを次のように取得します

e49ece87a60590483bb74c24e82f9d64d13d98c1

文字列から @ 記号を削除して同じテストを実行し、ウェブサイトとコードから一致する値を取得しました。どちらも同じハッシュコードを返します

08e1698b5818d8fdf0f7b31132c3b44c49671644

コードとウェブサイトによって生成されたもののうち、正しいものはどれですか? これは、文字列で @ 記号を使用している場合の既知の動作ですか?

4

2 に答える 2

4

常に使用してuse strict; use warnings;ください!

あなたの主張に反して、@あなたの文字列にはありません。

于 2012-11-08T09:14:58.807 に答える
3

@something二重引用符で囲まれた文字列内での使用は、Perl によって配列名として解釈されます。use warnings;と を使用していれば、その間違いに気が付いたでしょうuse strict;@解決策は簡単です。次のように をエスケープしますprint sha1_hex("some\@where.org")。または、単一引用符で囲まれた文字列を使用します。

于 2012-11-08T09:16:11.883 に答える