【问题标题】:PBKDF in Crypto++Crypto++ 中的 PBKDF
【发布时间】:2012-03-03 19:34:19
【问题描述】:

我在 C# 中有以下代码

PasswordDeriveBytes DerivedPassword = new PasswordDeriveBytes(Password, SaltValueBytes, 
                                              HashAlgorithm, PasswordIterations);
byte[] KeyBytes = DerivedPassword.GetBytes(32);

.Net 的PasswordDeriveBytes 使用PBKDF1。我正在使用“SHA1”哈希算法生成 32 字节密钥。

请告诉我如何在 crypto++ 中实现这一点。在使用 PBKDF2 的 crypto++ 中,它生成 20 字节的密钥。如何制作 C# 生成的 32 字节密钥。

【问题讨论】:

    标签: c++ cryptography crypto++ pbkdf2


    【解决方案1】:

    你不能,因为 PasswordDerivedBytes 不是标准的 PBKDF1,而 crypto++ 实现是。请改用 PBKDF2 实现(.NET 中的 Rfc2898DeriveBytes)。

    【讨论】:

    • 由于某种原因我无法更改 C# 的代码,我必须在 C++ 中解密 C# 加密文件。在 c++ 中,我使用的是 crypto++ 库,我得到了与在 crypto++ 中生成的 C# 相同的 20 个字节。但是找不到剩下的 12 个字节,这就是为什么我要问这些问题。非常感谢你的帮助,你对我真的很有帮助。
    • @Siddiqui:见 poupou 的回答 to your earlier question
    • @Siddiqui:.NET 是封闭源代码,PasswordDerivedBytes 使用的算法是专有的。您可以使用 Reflector 来检查实现,或者浏览 Mono 项目以防他们已经克隆了它。
    • @HenrickHellström 他们没有克隆它(不会修复),因为它是完全不安全的代码,甚至可以在以错误的顺序请求时重复字节。你可能想问一下单声道的人它是如何工作的。请参阅 poupou 对上一个问题的回答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多