加盐(Salt)是密码学中一种保护口令安全的技术:在密码经哈希算法处理前拼接一段随机字符串,使相同密码生成不同哈希值,从而有效防御彩虹表和批量撞库破解,是网站安全存储用户密码的基本手段。

| 类型 | 密码学 / 密码存储安全技术 |
| 英文名 | Salt / Salting |
| 所属领域 | 信息安全、身份认证 |
| 防御目标 | 彩虹表攻击、批量撞库破解 |
| 常见配合算法 | bcrypt、scrypt、Argon2、PBKDF2 |
加盐(Salt)是一种密码存储安全技术,指在对用户密码做哈希运算之前,先拼接上一段随机生成的字符串(称为「盐值」),再计算哈希值存入数据库,让相同的密码也会产生完全不同的哈希结果。
正规网站不会明文保存用户密码,而是保存密码经 MD5、SHA-256 或 bcrypt 等哈希算法计算后的散列值。但如果直接哈希,同一个密码得到的散列值永远相同,攻击者可以预先计算海量常见密码的哈希结果制成「彩虹表」,拿到泄露的数据库后一一比对,几秒钟就能反查出大量弱密码。
加盐正是针对这一弱点的防御手段:系统为每个用户生成一段独立的随机盐值,将其与密码拼接后再哈希,并把盐值与哈希结果一同存储。这样即使两个用户使用相同密码,数据库里的哈希值也完全不同,预先计算好的彩虹表随之失效,攻击者只能针对每条记录单独暴力破解,成本大幅提高。
「盐」这个名字是一种形象的比喻——就像做菜时撒盐会改变味道一样,往密码里「撒」一段随机数据,会彻底改变最终的哈希「味道」。
问:加盐等于加密吗?答:不是。哈希是单向运算,无法还原出原文;加盐只是让哈希结果随机化的辅助手段,与可逆的加密(如 AES)是不同概念。
问:盐值被黑客拿到了还安全吗?答:盐值本就不要求保密。它的价值在于迫使攻击者对每条记录单独穷举,无法使用预先算好的彩虹表;配合强密码和慢哈希算法,破解成本依然极高。
问:加了盐密码就绝对安全了吗?答:不是。如果用户使用「123456」这类弱密码,针对单条记录的暴力破解仍然很快。加盐只是安全存储的一环,还需配合强密码策略、慢哈希算法和两步验证等措施。

| 类型 | 密码学 / 密码存储安全技术 |
| 英文名 | Salt / Salting |
| 所属领域 | 信息安全、身份认证 |
| 防御目标 | 彩虹表攻击、批量撞库破解 |
| 常见配合算法 | bcrypt、scrypt、Argon2、PBKDF2 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧