C# 如何安全地存储用户密码 - 哈希与加盐(Salt)的最佳实践

小老鼠
发布: 2025-12-05 16:43:59
原创
890人浏览过
安全存储用户密码应使用Argon2或BCrypt等强哈希算法,配合唯一随机盐值和足够计算成本;禁用MD5、SHA1等快速哈希;盐须每用户独立且由密码学安全随机数生成;哈希需包含算法、参数、盐并采用标准格式存储。

c# 如何安全地存储用户密码 - 哈希与加盐(salt)的最佳实践

不要存储明文密码,也不要自己发明加密方式。安全存储用户密码的核心是:使用强哈希算法 + 唯一随机盐值 + 足够的计算成本。

Argon2BCrypt,而不是 MD5、SHA1、SHA256

MD5、SHA 系列是快速哈希,专为校验文件设计,不适合密码——它们跑得太快,容易被暴力破解或查表攻击。现代推荐:

  • Argon2(目前 NIST 推荐的首选):抗 GPU/ASIC 攻击,可调内存、时间、并行度
  • BCrypt:成熟稳定,.NET 有高质量实现(如 BCrypt.Net-Next),自带盐生成和验证逻辑
  • 如果必须用 .NET 内置方案,Rfc2898DeriveBytes(即 PBKDF2-HMAC-SHA256)可用,但安全性弱于前两者

盐(Salt)必须唯一、随机、每次生成

盐不是密钥,不需要保密,但必须满足两个条件:每用户独立 + 密码哈希前由密码学安全随机数生成器产生(如 RandomNumberGenerator)。

  • ❌ 不要复用同一盐值,不要用用户名、ID、固定字符串当盐
  • ✅ 盐长度建议 ≥ 16 字节;BCrypt 自动处理盐,Argon2 推荐 16–32 字节
  • 盐可以和哈希值一起存数据库(比如拼成 $argon2id$v=19$m=65536,t=3,p=4$...$... 这种标准格式),无需额外字段加密

哈希结果要带参数、可验证、防篡改

只存一个“哈希字符串”不够。必须同时记录算法、参数(如迭代次数、内存大小)、盐和输出——否则未来无法升级或验证。

Convai Technologies Inc.
Convai Technologies Inc.

对话式 AI API,用于设计游戏和支持端到端的语音交互

Convai Technologies Inc. 87
查看详情 Convai Technologies Inc.
  • 用标准格式序列化:Argon2 推荐使用 Argon2.NETHash 方法,它默认输出符合 IETF RFC 9106 的 Base64 编码字符串
  • BCrypt 使用 BCrypt.Net-NextHashPassword,返回含盐和参数的单字符串(如 $2a$12$...
  • 验证时直接传入原始密码和完整哈希字符串,库自动提取盐与参数完成比对

别忽略验证流程与防御时机

哈希只是存储环节。真实系统中还需注意:

  • 登录时统一用恒定时间比较(BCrypt.VerifyArgon2.Verify 已内置,勿用 ==
  • 对频繁失败的账号做限速(如滑动窗口计数器),防暴力撞库
  • 前端可加简单密码强度提示,但绝不前端哈希——服务端仍需重新哈希,否则等于放弃服务端防护
  • 定期审计:检查是否还有旧算法遗留(如 SHA1 存储的密码),迁移时采用“懒更新”策略(用户下次登录时重哈希)

基本上就这些。核心不是“怎么写代码”,而是“选对工具+拒绝捷径”。用成熟库、走标准流程、让盐和参数随哈希一起落库——安全就落在细节里。

以上就是C# 如何安全地存储用户密码 - 哈希与加盐(Salt)的最佳实践的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号