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

在系统设计中,密码的安全存储应采取哪些措施?请说明使用 MD5 直接存储密码存在的安全缺陷及原因。

风险判断安全意识技术原理

考察说明

考查密码存储的安全实践及对弱哈希算法风险的理解。

回答思路

  1. 【回答框架 1】安全存储密码的核心是使用加盐的慢速哈希算法,如 bcrypt、scrypt、Argon2,而非 MD5、SHA-1 等快速摘要算法。加盐可防止彩虹表攻击,慢速哈希增加暴力破解成本。
  2. 【回答框架 2】MD5 是快速哈希,且存在碰撞攻击,不适合密码存储。攻击者可通过彩虹表对无盐 MD5 快速反查,GPU 暴力破解每秒可尝试数十亿次,泄露后极易被破解。
  3. 【回答框架 3】推荐方案:使用 bcrypt 等自适应哈希,可调整工作因子,提升计算开销;同时为每个用户生成随机盐,与密码一起哈希,存储时保存算法、参数、盐和哈希值,验证时重新计算比较。
  4. 【关键点 1】密码不能明文或可逆加密存储,必须使用不可逆的加盐慢哈希。
  5. 【关键点 2】MD5 缺乏盐且计算快,易受彩虹表和暴力破解威胁。
  6. 【关键点 3】推荐 bcrypt/scrypt/Argon2,并采用随机盐和可调工作因子。
  7. 【易错点 1】不要以为 MD5 加盐就足够安全,仍需慢速哈希。
  8. 【易错点 2】避免使用固定盐,应每个用户独立随机盐。
  9. 【易错点 3】注意哈希算法的实现细节,防止计时攻击等情况。