参考文件: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();