MD5 和 SHA256 有什么区别

两者都是哈希函数:任意长度的输入,得到固定长度的输出,且不可逆。区别在两个地方: 输出长度(MD5 = 128 位 = 32 个十六进制字符,SHA256 = 256 位 = 64 个字符)和 抗碰撞强度(MD5 已被证明可以人为构造碰撞)。

各自该用在哪

方法 1:浏览器本地计算

哈希计算工具:MD5 / SHA1 / SHA256 / SHA512,支持粘贴文本或选文件, 纯本地计算,文件不上传。

计算哈希值 →

方法 2:命令行校验下载的文件

# Linux / Mac
sha256sum installer.zip
md5sum installer.zip

# 和官网公布的值对比(一行搞定)
echo "公布的哈希值  installer.zip" | sha256sum -c

# Windows PowerShell
Get-FileHash installer.zip -Algorithm SHA256
Get-FileHash installer.zip -Algorithm MD5

方法 3:密码存储的正确写法

# 错(数据库泄漏后直接反查彩虹表)
import hashlib; hashlib.md5(pw.encode()).hexdigest()

# 对
from werkzeug.security import generate_password_hash, check_password_hash
generate_password_hash(pw)        # 自动加盐 + 慢哈希
check_password_hash(stored, pw)

看到哈希值时要问的三件事