忠孝东路走九遍  

爬取某网站时,发现uuidv4.js中有个getRandomValues

var array = new Uint32Array(10);
window.crypto.getRandomValues(array);

console.log("Your lucky numbers:");
for (var i = 0; i < array.length; i++) {
    console.log(array[i]);
}

以上函数详情详见https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues,

具体模拟实现

function random(min,max){return Math.floor(Math.random()*(max-min+1)+min)};
function getRandomValues(buf){
    var min =0,max = 255;
    if (buf.length > 65536) {
        var e = new Error();
        e.code = 22;
        e.message = 'Failed to execute \'getRandomValues\' : The ' + 'ArrayBufferView\'s byte length (' + buf.length + ') exceeds the ' +'number of bytes of entropy available via this API (65536).';
        e.name = 'QuotaExceededError'; throw e; }
    if (buf instanceof Uint16Array)  {    max = 65535;  }
    else if (buf instanceof Uint32Array)  {max = 4294967295; }
    for (var element in buf)  { buf[element] = random(min,max); }
    return buf;}

buf = new Uint8Array(16);

console.log(getRandomValues(buf))

JS中随机数产生类型为Uint8Array(16),所以直接就生成了

用的编辑软件为webstorm。

 uuidv4()实现方法

function uuidv4() {
    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
        var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
        return v.toString(16);
    });
}
console.log(uuidv4())

代码来源https://blog.csdn.net/k_runtu/article/details/87713126,

uuid详解 https://www.cnblogs.com/xjnotxj/p/12162733.html 博客园真是大神云集~终于知道为什么好多网站都称为uuid了。

 

 

发现python有uuid的包    方法pip  install uuid (用的pycharm),切记文件名不能为uuid.py~

import uuid
print(uuid.uuid4())

 

 

 

 

 

 

 

 

 

 

 



posted on 2020-11-19 14:49  忠孝东路走九遍  阅读(626)  评论(0)    收藏  举报