从Rfc2898DeriveBytes类中获取的最大字节数

时间:2014-07-19 04:53:12

标签: security cryptography pbkdf2

我对PBKDF2及其处理步骤知之甚少。要了解更多信息,我开始阅读并查看代码。我在谷歌看过这样的代码。对于AES-128bit,N的值是16.我的问题是,随机使用我可以在多大程度上增加N的值?可以50吗?还是100?有没有上限?

        string password = "123456789";
        string salt = "987654321";
        Rfc2898DeriveBytes keyGenerator = new Rfc2898DeriveBytes(password, Encoding .UTF8 .GetBytes (salt ),10000);
        byte[] key1 = keyGenerator.GetBytes(N);

1 个答案:

答案 0 :(得分:1)

根据RFC 2898派生密钥的最大长度为(2^32 - 1) * hLen,其中hLen为 伪随机函数输出的八位字节长度。

您在代码示例中引用的.NET框架中的

Rfc2898DeriveBytes类使用HMAC-SHA1伪随机函数,该函数输出20个字节,因此在您的情况下,N的最大理论值为85899345900。