![UUID 及其在 MySQL 中的使用](http://img.jiangsulong.com/220422/1231552K5-0.jpg)
文章插图
1. UUID 是什么?UUID(Universally Unique Identifier 通用唯一识别码)用于标识资源唯一性 。理论上说,门牌号、电话号码、邮编、身份证号都是用来标识资源唯一性的,但为使用方便,不适合用一个无规律的字符串表示,UUID 主要还是在程序中使用 。
UUID 源自1980年代的 Apollo 电脑公司,是一个 128 位的标识符,理论上的总数有 2128个,也就是说,哪怕每纳秒产生 1 万亿个 UUID,也要 100 亿年才能用完 。因此,只要保证生成方法的散布足够好,统计概率上,UUID 重复的可能性约等于 0。
UUID 的具体规范可以参考 RFC 4122 。这个标准定义了 5 个版本的 UUID:
- 版本 1 根据时间和 mac 地址来生成 UUID 。MAC 地址用于保证设备唯一性 。通过在时间戳后加入 13-14 位的时钟序列,可以保证在同一台设备,同 1 秒内生成的 1630 亿个 UUID 不重复 。这个版本的 UUID 我们用得相对较少,一个原因是其中携带了设备信息 。1999 年,著名病毒梅丽莎的作者,因为代码中的 UUID 暴露了 MAC 地址信息,不到一个星期就被抓住了 。另一个原因是这个版本的 UUID 生成有规律,比较容易根据一个 UUID 推断到下一个 UUID 。
- 版本 2 是一个 DEC 安全的版本,RFC4122 中也没有详细说明具体实现方式,我们一般也用不到 。
- 版本 3 根据字符串和命名空间散列值(HASH)来获取 UUID 。由于 HASH 函数本身的特性,一般不用担心 UUID 冲突,或者别人根据散列值反推原数据的问题 。这个版本采用的是 MD5 散列值 。
- 版本 4 根据随机数生成 UUID,是我们比较常用的版本 。
- 版本 5 和版本 3 一样,也是根据散列值获取 UUID,不过采用的散列算法是 SHA-1 而不是 MD5,相较而言,RFC4122 推荐大家使用版本 5 而不是版本 3 。
推荐阅读
- 喝茶喝的就是种心情,你是否在不分昼夜的喝茶
- 法斗一只正常要多少钱 法斗市场价
- 房子卖掉了,户籍留在派出所可以吗 房子卖掉户籍迁哪里
- 摄像头|人在职场,面对领导的打压,做好这三件事情,就可以有效化解
- 以为月经干净就同房了
- 月经好久都不干净
- 月经六天了还没干净怎么回事
- 下面炎症发了很疼怎么办
- tct细胞学检测轻度炎症
- 女生塑形健身计划