详细官方地址:https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues
https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder
function transformUint8ArrayToBase64(array) {
var binary = "";
for (var len = array.byteLength, i = 0; i < len; i++) {
binary += String.fromCharCode(array[i]);
}
return window.btoa(binary).replace(/=/g, "");
}
function randomSessionId() {
let ua = new Uint8Array(20);
new DataView(ua.buffer).setUint32(0, Math.floor(+new Date() / 1000));
crypto.getRandomValues(ua.subarray(4, 20));
return (
"1." +
transformUint8ArrayToBase64(ua)
.replaceAll("+", "-")
.replaceAll("/", "_")
);
},
这篇博客介绍了如何利用Web Crypto API的getRandomValues方法和TextDecoder接口来创建一个包含当前时间戳的20字节的随机会话ID。会话ID通过将Uint8Array转换为Base64字符串,并进行URL安全的字符替换,确保其在Web环境中安全使用。

1163

被折叠的 条评论
为什么被折叠?



