`
darkma
  • 浏览: 521000 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

利用JS生成32位的UUID(源码)

阅读更多

创建 UUID.js 文件, 然后复制以下内容:

 

// On creation of a UUID object, set it's initial value
function UUID(){
    this.id = this.createUUID();
}

 

// When asked what this Object is, lie and return it's value
UUID.prototype.valueOf = function(){ return this.id; };
UUID.prototype.toString = function(){ return this.id; };

 

//
// INSTANCE SPECIFIC METHODS
//
UUID.prototype.createUUID = function(){
    //
    // Loose interpretation of the specification DCE 1.1: Remote Procedure Call
    // since JavaScript doesn't allow access to internal systems, the last 48 bits
    // of the node section is made up using a series of random numbers (6 octets long).
    // 
    var dg = new Date(1582, 10, 15, 0, 0, 0, 0);
    var dc = new Date();
    var t = dc.getTime() - dg.getTime();
    var tl = UUID.getIntegerBits(t,0,31);
    var tm = UUID.getIntegerBits(t,32,47);
    var thv = UUID.getIntegerBits(t,48,59) + '1'; // version 1, security version is 2
    var csar = UUID.getIntegerBits(UUID.rand(4095),0,7);
    var csl = UUID.getIntegerBits(UUID.rand(4095),0,7);

    // since detection of anything about the machine/browser is far to buggy,
    // include some more random numbers here
    // if NIC or an IP can be obtained reliably, that should be put in
    // here instead.
    var n = UUID.getIntegerBits(UUID.rand(8191),0,7) +
            UUID.getIntegerBits(UUID.rand(8191),8,15) +
            UUID.getIntegerBits(UUID.rand(8191),0,7) +
            UUID.getIntegerBits(UUID.rand(8191),8,15) +
            UUID.getIntegerBits(UUID.rand(8191),0,15); // this last number is two octets long
    return tl + tm  + thv  + csar + csl + n;
};

 

//Pull out only certain bits from a very large integer, used to get the time
//code information for the first part of a UUID. Will return zero's if there
//aren't enough bits to shift where it needs to.
UUID.getIntegerBits = function(val,start,end){
 var base16 = UUID.returnBase(val,16);
 var quadArray = new Array();
 var quadString = '';
 var i = 0;
 for(i=0;i<base16.length;i++){
     quadArray.push(base16.substring(i,i+1));   
 }
 for(i=Math.floor(start/4);i<=Math.floor(end/4);i++){
     if(!quadArray[i] || quadArray[i] == '') quadString += '0';
     else quadString += quadArray[i];
 }
 return quadString;
};

 

//Replaced from the original function to leverage the built in methods in
//JavaScript. Thanks to Robert Kieffer for pointing this one out
UUID.returnBase = function(number, base){
 return (number).toString(base).toUpperCase();
};

 

//pick a random number within a range of numbers
//int b rand(int a); where 0 <= b <= a
UUID.rand = function(max){
 return Math.floor(Math.random() * (max + 1));
};

 

 

注: 使用时, 调用UUID.prototype.createUUID ()方法,返回32位UUID

分享到:
评论
3 楼 young.java 2014-06-07  
[flash=200,200][url][img][list]
[*]
引用
[u][i][b][/b][/i][/u]
[/list][/img][/url][/flash]
2 楼 pdreamer 2011-07-08  
function makeUUID() {
    var S4 = function () {
        return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
    };
    return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
}
1 楼 蓝色0度 2011-03-10  

正要用这个

相关推荐

    UUID生成模块源码,支持版本1,3,4,5

    参考案例。https://github.com/uuidjs/uuid。https://github.com/google/uuid。@mole。

    八字排盘java源码-clj-uuid:Clojure的RFC4122唯一标识符(v1、v3、v4、v5、squid)

    java源码clj-uuid “UUID 的目的是使分布式系统能够在没有重要中央协调的情况下唯一地识别信息。” —— clj-uuid是一个 Clojure 库,用于生成和利用 UUID(通用唯一标识符),如 所述。 该库扩展了标准 Java UUID ...

    2023最新全功能版在线WEB工具箱PHP源码

    UUID v4 生成器工具。Bcrypt 生成器工具。 密码生成器工具。密码强度检查工具。弹头生成器工具。HTML 压缩工具。CSS 缩小工具。JS 压缩工具。用户代理解析器工具。 网站托管检查工具。字符计数器工具。URL 解析器...

    多功能版在线WEB工具箱PHP源码带后台安装版

    UUID v4 生成器工具。Bcrypt 生成器工具。 密码生成器工具。密码强度检查工具。弹头生成器工具。HTML 压缩工具。CSS 缩小工具。JS 压缩工具。用户代理解析器工具。 网站托管检查工具。字符计数器工具。URL 解析器...

    2023最新全功能版在线WEB工具箱PHP源码 66toolkit.zip

    UUID v4 生成器工具。Bcrypt 生成器工具。 密码生成器工具。密码强度检查工具。弹头生成器工具。HTML 压缩工具。CSS 缩小工具。JS 压缩工具。用户代理解析器工具。 网站托管检查工具。字符计数器工具。URL 解析器...

    200个微信小程序案例源码可运行.zip

    使用第三方模块Underscore.js, Immutable.js, UUID 推荐研究demo:豆瓣电影:代码中有大量注释 微信下程序demo:电影麻辣烫 微信小程序模仿拉钩招聘APP源代码 微信小程序24点计算游戏 微信小程序24点计算游戏(2) 微信小...

    JavaScript常用函数工具集:lao-utils

    uuid() 生成一个uuid串(伪guid) is(x,y) 比较字符x和字符y是否相等 eg: 特殊例子:laoUtils.is(-0,+0); //false,laoUtils.is(NaN,NaN); //true isInteger(value) 是否为整数 isNumber(value) 是否为数字 ...

    javaWeb传智播客网上书城项目源码(设计以及实现论文)

    激活码使用uuid生成! &gt; 登录成功时会把当前用户名保存到cookie中,为了在登录页面的输入框中显示! 用户退出:销毁session 2). 分类模块 查询所有分类: &gt; 有1级和2级分类 &gt; 在页面中使用手风琴式菜单...

    基于Vue2框架的大型商城项目

    4.nanoid生成临时唯一id,实现游客模式访问商城(与此类似的有uuid) 5.mock.js在开发未完成时,模拟服务器返回静态数据 6.swiper.js轻量级的轮播图插件 7.lodrash是一个著名的javascript原生库,包含许多封装好...

    基于JavaWeb的期刊管理系统+课设报告.zip

    该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到94.5分,放心下载使用! 该资源适合计算机相关专业(如人工智能、通信工程、自动化、软件工程等)的在校学生、老师或者...

Global site tag (gtag.js) - Google Analytics