我正在嘗試編寫一些Perl以便與其他語言的散列函數進行操作,即在此處使用Java。我們發現大概是一個正確的來源,RFC 4868其中包括一些測試鍵&字符串及其散列值。我正在使用下面的代碼片段,並且無法讓Perl獲得相同的結果。我只能假設我錯誤地使用它 - 任何人都可以指向正確的方向嗎?爲什麼Digest :: SHA與RFC 4868中顯示的哈希值不同?
use Digest::SHA qw(hmac_sha512_hex);
my $key = '0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b';
my $value = '4869205468657265';
print hmac_sha512_hex($value, $key);
輸出 '4ef7 ... 5d40',儘管RFC 4868(和我的同胞的Java實現)返回 '87aa ...... 6854'
你的鑰匙被正確解釋爲十六進制嗎? – Greg 2009-09-23 17:48:09
好主意,但仍然沒有骰子: perl -e'使用Digest :: SHA「hmac_sha512_hex」;打印hmac_sha512_hex(「4869205468657265」,「0x0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b」);' 224d86ae23ef390be64726e20590bca701e8c5ab1ae865d9e04b0cbc18fd73fbba1ca10a24e162f6399f07d1a2fa86766993ce84dd7a9a826a06144fb9062be8 – 2009-09-23 17:54:20
不要引用您的十六進制字符串。嘗試打印0xa並打印「0xa」。 – innaM 2009-09-23 18:31:46