📅  最后修改于: 2023-12-03 15:11:14.172000             🧑  作者: Mango
在 JavaScript 中,我们可以使用 crypto.getRandomValues()
方法来生成随机十六进制字节。该方法可以生成安全的伪随机数。
以下是一段可以生成随机十六进制字节的代码片段:
function getRandomHex(length) {
const buffer = new Uint8Array(length / 2);
crypto.getRandomValues(buffer);
return Array.from(buffer, (byte) => {
return ('0' + byte.toString(16)).slice(-2);
}).join('');
}
console.log(getRandomHex(16)); // 输出如:f5e0455c5faf5e5a2d55fb5ac3c7457f
function getRandomHex(length)
定义了一个生成随机十六进制字节的函数,函数接收一个参数 length
,表示生成的字节长度;const buffer = new Uint8Array(length / 2)
定义了一个长度为 length / 2
的 Uint8Array
类型的缓冲区 buffer
;crypto.getRandomValues(buffer)
通过 crypto
对象的 getRandomValues()
方法生成随机数,并将结果存储到 buffer
中;Array.from(buffer, (byte) => { return ('0' + byte.toString(16)).slice(-2); }).join('')
将 buffer
转换成由十六进制字符串组成的数组,并将其连接成一个字符串返回。crypto.getRandomValues()
方法,所以该代码只能在支持 Web Crypto API
的浏览器中运行;length
参数必须是 2 的倍数,因为每个字节需要表示为两位十六进制数。