C# PasswordDeriveBytes 混淆

标签 c# cryptography pbkdf2

我在 C# 中有以下代码

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

我正在使用“SHA1”散列算法。

根据SHA1定义,它生成160位(20字节)的 key 。我的问题是 GetBytes 方法如何从 DerivedPassword 获取 32 个字节,GetBytes 方法背后使用什么算法?

最佳答案

Microsoft 对原始 PKCS#5(又名 PBKDF1)的实现包括不安全扩展以提供比散列函数可以提供的字节更多的字节(参见错误报告 herehere)。

即使它没有错误,您也应该避免对标准进行未记录的专有扩展(否则您将来可能永远无法解密您的数据 - 至少不能在 Windows 之外。)

强烈建议您使用较新的 Rfc2898DeriveBytes,它实现了自 .NET 2.0 以来可用的 PBKDF2 (PKCS#5 v2)。

关于C# PasswordDeriveBytes 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9231754/

相关文章:

javascript - Web服务和网站在同一个项目中

python - 如何使用 python 解码 SSL 证书?

c# - PBKDF2 Python key 与 .NET Rfc2898

oracle - 如何在 Oracle 12c 中使用 PBKDF2?

python - 在 .NET 中验证 Python Passlib 生成的 PBKDF2 SHA512 哈希

c# - .NET Core 中的 *deps.json 文件

c# - Blazor 渲染内容两次

c# - 如何使用 css 或 javascript 将 ASP 下拉列表设置为只读?

c# - 如何在 C# 中使用 RSA 加密文件(大数据)

c - 通过 C 中的文件使用 crypt 函数进行身份验证(段错误)