3

我计划使用类似于Amazon AWS 示例的代码来验证签名的 API 请求。所以用户会有类似的东西:

use Digest::SHA qw(hmac_sha256_base64);
my $digest = hmac_sha256_base64 ($request, $self->{SecretKey});

$digest并作为参数附加到他们的请求 URI。服务器端将使用相同的算法从客户端 URI 创建摘要,并将其与客户端发送的值进行比较。

我找不到的是Perl支持生成正确长度的 SecretKey 以在生成 HMAC SHA256 摘要时使用。

对于我的 Amazon AWS 账户,我得到了一个 40 ASCII 字符的 base64 编码字符串。

如何为我的客户生成正确的密钥?

4

1 回答 1

2

我建议你使用 PBKDF2 算法。PBKDF2 = "基于密码的密钥派生函数 (#2)"。它在 PKCS #5 ( RFC 2898 ) 中定义。这是从密码派生密钥的推荐方法。你也需要盐。典型的迭代计数为 1000。

这个页面说它有一个 PBKDF2 的 perl 实现。我没试过。

显然还有一个Crypto::PBKDF2,但它背负着你可能不想要的依赖。


编辑

我刚刚尝试了 Anthony Thyssen 的 pbkdf2 的 perl 程序——效果很好。简单,轻松。

于 2011-04-25T18:59:54.867 回答