为什么没有人用md5(UUID(), 16)来生成16位大小写不敏感的唯一取值?

最近我在考虑如何缩短UUID的长度,大部分人说用Base64等方法, 但是我很奇怪, UUID()是唯一的, md5()后的值也很难冲突, 为什么很少有人用呢? 我本人是UUID用习惯了, 最近才考虑到长度的问题, 所以数据库主键由UUID改为16个字符长度的md5(UUID(), 16)需要该不少地方, 像URL重写, 正则匹配等, 但是为啥没有人用呢? 是不是有什么缺陷?

阅读 22.2k
4 个回答
  1. uuid和md5都是128bit的字符串。
  2. uuid通过一定生成方式保障了独特性。 md5则没有。

可以的 . 理论上没有问题 . 其实 uuid 也是根据 时间用 crypt() 函数生成的.

你要知道 md5 也是他的一种

md5不等于唯一啊

你可以用时间戳精确到微秒在MD5,不放心的话在加salt在MD5,在不放心就在rand再MD5咯。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进