安全岗位面试题更新 2026-08-05

请解释加盐哈希的概念,并对比bcrypt、scrypt、Argon2这三种密码哈希算法的区别。

安全意识技术原理方案权衡

考察说明

考查对密码学中加盐哈希的理解以及主流密码哈希算法的特性对比。

回答思路

  1. 【回答框架 1】加盐哈希是指在原始密码上附加随机生成的盐值,再进行哈希计算,使得相同密码产生不同哈希值,核心作用是抵御彩虹表攻击和预计算攻击。
  2. 【回答框架 2】bcrypt基于Blowfish密码算法,内置盐值和可调的成本因子,输出固定为60字符,适合交互式登录场景,但内存占用固定为4KB,硬件ASIC加速下强度受限。
  3. 【回答框架 3】scrypt基于PBKDF2并增加大量内存依赖,通过参数N(CPU/内存成本)、r(块大小)、p(并行度)控制资源消耗,能有效提升GPU/ASIC破解成本。
  4. 【回答框架 4】Argon2是Password Hashing Competition获胜算法,分为Argon2d(数据依赖)、Argon2i(数据独立)、Argon2id(混合)三个变体,Argon2id推荐用于密码哈希,可配置内存、时间、并行度参数。
  5. 【回答框架 5】实际选型时,在没有特殊受限环境时优先Argon2id或bcrypt,三者均需设置合理盐值和成本参数;在高并发服务中需平衡安全性与性能,并遵循NIST等标准的建议。
  6. 【关键点 1】加盐哈希防止相同密码产生相同哈希,抵御彩虹表。
  7. 【关键点 2】bcrypt、scrypt、Argon2都是抗暴力破解的密码哈希算法,但侧重不同。
  8. 【关键点 3】Argon2id被认为是当前最推荐的密码哈希算法。
  9. 【关键点 4】盐值应随机且唯一,每次哈希都需独立生成。
  10. 【关键点 5】具体参数需根据硬件能力与安全需求调整,无通用最优值。
  11. 【易错点 1】混淆密码哈希与普通哈希(如SHA-256)用途,普通哈希不适用于密码存储。
  12. 【易错点 2】忽视盐值管理,若盐值固定或复用,会削弱安全性。
  13. 【易错点 3】认为使用这些算法就绝对安全,忽略参数配置和服务端其他防护。