js产生GUID两种方法

来源:互联网 发布:运行windows激活信息的 编辑:程序博客网 时间:2024/06/06 02:25
    //生成随机GUID    function GUID() {        var G1 = (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1) + (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);        var G2 = (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1) + (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);        return (G1 + G2);    }    // On creation of a UUID object, set it's initial value  根据时间产生UUID    function UUID() {        this.id = this.createUUID();    }    UUID.prototype.valueOf = function () { return this.id; }    UUID.prototype.toString = function () { return this.id; }    UUID.prototype.createUUID = function () {        //          // Loose interpretation of the specification DCE 1.1: Remote Procedure Call          // described at http://www.opengroup.org/onlinepubs/009629399/apdxa.htm#tagtcjh_37          // 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;    }    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;    }    UUID.returnBase = function (number, base) {        return (number).toString(base).toUpperCase();    }    UUID.rand = function (max) {        return Math.floor(Math.random() * (max + 1));    }}

0 0
原创粉丝点击