方案对照
| 方案 | 抗 GPU 能力 | 关键参数 | 备注 |
|---|---|---|---|
| Argon2id | 强 | 内存 19-46 MiB、t=1-2、p=1 | 新项目优先 |
| scrypt | 强 | N=2^17、r=8、p=1 | 库支持需确认 |
| bcrypt | 中 | cost 10 以上 | 72 字节上限 |
| PBKDF2 | 中偏弱 | SHA-256 迭代 600,000 次 | 合规场景常见 |
| 单轮 SHA-256/MD5 | 无 | - | 不可用于口令存储 |
渐进式升级思路(伪代码)
渐进式升级思路(伪代码)
login(user, pw):
h = load_hash(user)
if verify(pw, h) == False: return fail
if h.algorithm != current_algorithm or h.params < current_params:
store_hash(user, hash(pw)) # 用新参数重算
return ok存量迁移依赖散列前缀识别($1$/$2b$/$6$/$argon2id$),保留旧算法标识才能平滑升级。