全部文章
Cyber security 网络安全

更加安全的密码存储方式

更新于 2026年4月22日 699 字 约 2 分钟
CYBER SECURITY 更加安全的密码存储 方式 网络安全 § 01
阅读进度 0% 继续阅读

一.MD5和SHA-1加密的缺点

之前做项目的时候,密码等用户的验证信息都是用的md5或SHA-1这样的哈希存储方式。

哈希是一种不可逆的加密算法,能从原密码得到加密结果,但无法从加密结果逆运算回原密码。

但md5和SHA-1这种加密方式目前有些太老了,虽然学校里面的JAVA web貌似就讲了这两个,没有讲更深入的,并且在vibe coding的时候AI也是默认使用的这种方法对密码进行hash存储。

但这种方法其实有些缺点,比如

1.md5和SHA-1的加密太过于快速了,Python几行代码,几秒钟就跑出来了,所以就引出了彩虹表rainbow table

2.可以用rainbow table彩虹表来进行撞库,彩虹表是针对哈希算法的一种常见的攻击方式,方法是把很多的常见密码提前给计算好(毕竟计算速度很快),如果攻击者拿到了数据库中的哈希那就查表就行了。并且如果网站不加盐的话,那么所有用相同密码的用户哈希值都相同,那么就能一次就可以爆出很多重复密码的用户。

所以md5和SHA-1的抗碰撞性真的很低

二.对撞库的防御

目前最常见的方式是加盐salt,即给每个用户的密码拼接上一个特定字符串,一般来说每个用户拼接的字符串都是不同的,这样就算用户的密码相同,哈希值也不同。接着再来进行哈希,这样能够提高撞库的猜测成本

如

张三:123456 + x7K9...
李四:123456 + p2lm...

但加盐还是解决不了最核心的问题,那就是它们太快了。而OWASP明确说现代密码哈希应该是慢的,让攻击者每次猜测都比较昂贵。

OWASP的推荐做法是使用Argon2id,如果不支持还可以使用bcrypt,PBKDF2等加密方法

三.Agron2id和PBKDF2

3.1 Agron2id

是主流,现代的一类密码哈希算法,OWASP官方推荐,是首选,它厉害的点不在于算的多慢,而是会让算的过程吃内存

  • 普通快哈希:像“做一道超快口算题”
  • Argon2id:像“做题时不仅要反复算,还要占一大张桌子摆材料”

3.2 PBKDF2

老资格的加密方案,但仍被大量使用,本质是靠大量重复的计算,拖慢攻击者破解的速度,虽然Agron2id抗暴力破解更强,但是PBKDF2在合规性上更占优势,比如zf,强合规,是否满足FIPS 140要求的情况下

不过首推还是Agron2id

目录