学习 uuid nanoid

592 阅读2分钟

参考文件:blog.csdn.net/mr_raptor/a…
参考文件:blog.csdn.net/weixin_4061…
js从生成UUId的四种算法地址:blog.csdn.net/mcj_2017/ar…

1.简介

全局唯一标识符(GUID),也称作uuid

GUID是一种算法生成的二进制长度为128位的数字标识符,GUID的格式:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX,其中x是由0-9或a-f组成的一个32位16进制数,理想情况下不会生成相同的UUID

2.UUID的四个版本

①基于时间的UUID

基于时间的UUID通过计算时间戳,随机数,还有机器的MAC地址得到,由于使用机器的MAC,这个UUID可以保证全球范围的唯一性,使用MAC地址会带来安全问题,这也是受争议的地方,如果在局域网,使用退化算法用IP代替MAC

②基于名字的UUID(MD5)

基于名字的UUID通过计算机名字和名字空间的MD5散列值得到,--保证了,相同名字空间中不同名字生成的UUID的唯一性,不同名字空间中的UUID的唯一性,相同名字空间中相同名字的UUID重复生成时相同的

③随机UUID

根据随机数或者伪随机数生成UUID,

④基于名字的UUID(SHA1)

只是散列值计算使用SHA1算法

3.代码实现

function generateUUID() {
    var d = new Date().getTime();
    if(window.performance && typeof window.performance.now === "function") {
     d += performance.now();
    }
    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(c) {
     var r =(d +Math.random()*16)%16 |0;
     d=Math.floor(d/16);
     return (c == 'x' ? r :(r & 0x3 |0x8)).toString(16);
    })
    return uuid
}

4.nanoid

一个小巧,简便的生成唯一id的库

  • 安全:它使用加密、强大的随机 API,并保证符号的正确分配
  • 体积小:只有 258 bytes 大小(压缩后)、无依赖
  • 紧凑:它使用比 UUID (A-Za-z0-9_~)更多的符号

使用方法

1.安装nanoid库 npm i nanoid 2.引入nanoid,因为是分批导出,导入需要用下边的方式 import {nanoid} from 'nanoid' 3.使用nanoid,一个方法,直接调用 nanoid();