Dre*_*ens 2 encryption perl hash digest
我正在尝试编写一些Perl来与其他语言中的哈希函数进行交互操作,即Java.我们已经找到了可能是正确的源代码,RFC 4868包括一些测试键和字符串以及它们的散列值.我正在使用以下代码段,并且无法让Perl得出相同的结果.我只能假设我错误地使用它 - 有人能指出我正确的方向吗?
use Digest::SHA qw(hmac_sha512_hex);
my $key = '0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b';
my $value = '4869205468657265';
print hmac_sha512_hex($value, $key);
Run Code Online (Sandbox Code Playgroud)
输出是'4ef7 ... 5d40',虽然RFC 4868(和我的同胞的Java实现)返回'87aa ... 6854'
Mic*_*ker 16
use Digest::SHA qw(hmac_sha512_hex);
my $key = pack('H*','0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b');
my $value = "Hi There";
print hmac_sha512_hex($value, $key);
Run Code Online (Sandbox Code Playgroud)
给
87aa7cdea5ef619d4ff0b4241a1d6cb02379f4e2ce4ec2787ad0b30545e17cdedaa833b7d6b8a702038b274eaea3f4e4be9d914eeb61f1702e696c203a126854
Run Code Online (Sandbox Code Playgroud)
引用RFC:
Key = 0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
0b0b0b0b (20 bytes)
Data = 4869205468657265 ("Hi There")
PRF-HMAC-SHA-512 = 87aa7cdea5ef619d4ff0b4241a1d6cb0
2379f4e2ce4ec2787ad0b30545e17cde
daa833b7d6b8a702038b274eaea3f4e4
be9d914eeb61f1702e696c203a126854
Run Code Online (Sandbox Code Playgroud)
PS添加'0x'到字符串不会使它成为二进制,它使它开始'0'和'x';-)
Joh*_*ica 12
测试密钥需要是20个字节,其中每个字节都有十六进制值0x0B,而不是一个40个字符的字符串.测试值是字符串"Hi There",而不是字符串"4869205468657625".试试这个:
use Digest::SHA qw(hmac_sha512_hex);
my $key = "\x0b" x 20;
my $value = 'Hi There';
print hmac_sha512_hex($value, $key) . "\n";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
491 次 |
| 最近记录: |