zoukankan      html  css  js  c++  java
  • 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));
    };

  • 相关阅读:
    ios webview调试
    iOS与网页JS交互,看我就够了
    iOS开发工具-网络封包分析工具Charles
    使用 Charles 抓取 App 网络请求
    用css解决table文字溢出控制td显示字数
    Docker容器学习与分享03
    Docker容器学习与分享02
    Docker容器学习与分享01
    写在重新更新之前
    Kali学习笔记30:身份认证与命令执行漏洞
  • 原文地址:https://www.cnblogs.com/strive-study/p/5161748.html
Copyright © 2011-2022 走看看