📌  相关文章
📜  生成随机十六进制字节 javascript (1)

📅  最后修改于: 2023-12-03 15:11:14.172000             🧑  作者: Mango

生成随机十六进制字节 JavaScript

在 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
代码解释
  1. function getRandomHex(length) 定义了一个生成随机十六进制字节的函数,函数接收一个参数 length,表示生成的字节长度;
  2. const buffer = new Uint8Array(length / 2) 定义了一个长度为 length / 2Uint8Array 类型的缓冲区 buffer
  3. crypto.getRandomValues(buffer) 通过 crypto 对象的 getRandomValues() 方法生成随机数,并将结果存储到 buffer 中;
  4. Array.from(buffer, (byte) => { return ('0' + byte.toString(16)).slice(-2); }).join('')buffer 转换成由十六进制字符串组成的数组,并将其连接成一个字符串返回。
注意事项
  1. 由于使用了 crypto.getRandomValues() 方法,所以该代码只能在支持 Web Crypto API 的浏览器中运行;
  2. 由于生成的是随机数,所以每次运行代码生成的结果都不同;
  3. length 参数必须是 2 的倍数,因为每个字节需要表示为两位十六进制数。