You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rfc2898DeriveBytes为何既基于HMACSHA1又支持自定义哈希算法?

关于Rfc2898DeriveBytes的哈希算法疑惑解答

这完全不存在矛盾,是版本迭代带来的功能扩展:

  • 早期的Rfc2898DeriveBytes确实仅基于HMACSHA1实现PBKDF2,文档里的描述是对这个初始实现的准确记录。
  • 后续的.NET版本(比如.NET Core、.NET 5及以上)对这个类做了扩展,新增了支持传入自定义哈希算法的构造函数,这些新增的构造函数没有被标记为过时;而原来仅支持SHA1的旧构造函数则被标记为过时。
  • PBKDF2标准本身并不限制必须使用SHA1,它支持任意HMAC兼容的哈希算法,所以.NET后续的扩展是符合标准的升级,让开发者可以选择更安全的哈希算法(比如SHA256、SHA512)来实现PBKDF2。

举个使用自定义哈希算法的示例:

using var deriveBytes = new Rfc2898DeriveBytes(
    password: "your-password",
    salt: Encoding.UTF8.GetBytes("your-salt"),
    iterations: 100000,
    hashAlgorithm: HashAlgorithmName.SHA512);
byte[] key = deriveBytes.GetBytes(32);

内容的提问来源于stack exchange,提问作者ispiro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 08:40:28