The Sejolyn Memo

Back

核心特性#

MD5 核心特性:

  • 压缩性:无论明文长度是多少,输出的 MD5 值长度永远固定(32 位十六进制字符串)
  • 不可逆性:可以通过明文算出 MD5,但是无法从 MD5 反向推导出明文
  • 抗碰撞性:不同的明文生成的 MD5 绝不相同。只要是原始数据改动了一个字节,生成的 MD5 就会天差地别(雪崩效应)

应用场景#

在「苍穹外卖」中,MD5 主要用于保护密码安全

  1. 用户注册/新增员工:

    • 将前端传过来的明文密码,经过 MD5 加密后再存储到数据库
  2. 用户登陆

    • 将前端传过来的明文密码进行 MD5 加密

    • 将加密后的结果与数据库对比

缺陷#

单纯的MD5 已经不再安全,虽然其不可逆,但是黑客可以使用 彩虹表进行暴力碰撞。

  • 彩虹表:预先计算好常见密码的 MD5 值并存成一张大表
  • 拿到数据库里的 MD5 后,通过查表就可以反推出明文(利用「抗碰撞性」

优化#

为了破解彩虹表,可以给密码“加盐”:

  1. 用户密码是 123456
  2. 系统随机生成一个字符串(盐值,比如 &*%#_!22)。
  3. 123456 + &*%#_!22 的组合进行 MD5 加密。
  4. 即使两个用户的密码都是 123456,因为盐值不同,数据库里的乱码也完全不同。这让彩虹表彻底失效
「苍穹外卖」复盘:MD5加密
https://sejolyn.fyi/blog/sky-take-out/md5
Author Sejolyn
Published at December 19, 2025
Comment seems to stuck. Try to refresh?✨