MD5、SHA-256、UUID 名字相近但用途完全不同:MD5/SHA-256 是哈希算法(同输入同输出),UUID 是唯一标识生成器(每次生成几乎都不同)。MD5 已不再安全,密码必须用 SHA-256+盐 或更专业的 bcrypt/Argon2。

一句话区别

工具类别输出安全性主要用途
MD5哈希算法32 位十六进制(128 bit)极低(已破解)老系统文件校验、缓存键
SHA-256安全哈希64 位十六进制(256 bit)密码(须加盐)、签名、防篡改
UUID唯一标识36 位带横杠无安全属性主键、订单号、设备 ID

关键差别

维度MD5 / SHA-256UUID
是否同输入同输出否(每次几乎都不同)
是否可逆不可逆不是加密,无可逆概念
是否依赖输入UUID v4 完全随机
防碰撞取决于算法强度概率上几乎不会冲突

各自简介

MD5

  • 速度快,但已被破解,不能用于密码或对抗性场景
  • 仍可用:非敏感的文件去重、缓存键、ETag
  • 示例:123456e10adc3949ba59abbe56e057f20f883e

SHA-256

  • 当前主流安全哈希,防碰撞强
  • 标准用途:密码(必须加盐,更优用 bcrypt/Argon2)、接口签名、安装包/文件完整性
  • 示例:1234568d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca120c9c3923dbc662

UUID

  • 全球唯一标识,无序无规律,不依赖中央授权
  • v1 基于时间+MAC,v4 基于随机数(最常用),v5 基于命名空间+SHA-1
  • 用途:分布式 ID、订单号、文件名
  • 示例:123e4567-e89b-12d3-a456-426614174000

怎么选

需求选择
用户密码存储bcrypt / Argon2 / scrypt(次选 SHA-256 + 盐)
文件 / 数据完整性SHA-256
接口签名、防篡改SHA-256 + HMAC
分布式主键、订单号UUID v4
老项目兼容、非敏感校验MD5
新项目安全相关永远不要用 MD5

Python 速查

import hashlib, uuid
 
data = "123456"
print(hashlib.md5(data.encode()).hexdigest())     # MD5
print(hashlib.sha256(data.encode()).hexdigest())  # SHA-256
print(str(uuid.uuid4()))                           # UUID v4