避免“数据库哈希碰撞”要分清你指的是哪种哈希、用在什么场景。下面按常见场景给出原则和做法。
例如用 MD5 / SHA1 / 不加盐哈希存密码。
目标不是“完全避免碰撞”,而是:
✅ 正确做法:
❌ 错误做法:
例如用 MD5(url)、SHA1(file) 作为主键。
这里碰撞是真实风险。
✅ 避免碰撞的方法:
不要用短哈希做主键
加业务字段组合哈希
hash = SHA256(user_id + url + timestamp)
数据库层兜底
UNIQUE高并发场景
例如:
partition = hash(user_id) % 16
✅ 建议:
| 场景 | 推荐方案 |
|---|---|
| 密码 | Argon2 + salt |
| 唯一标识 | SHA-256 + UNIQUE |
| 主键 | UUID / 雪花 ID |
| 分片 | MurmurHash |
| 安全校验 | HMAC |
数据库里“避免哈希碰撞”的核心不是选一个“不会撞”的哈希,而是:用对哈希算法 + 加 salt + 数据库约束兜底。
如果你能说一下:
我可以给你具体表结构和代码示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。