我需要使用JavaScript将hash-paragraph.innerHTML设置为随机字符串。

我已经试过了:



function CreateHash() {
  var randomhash = crypto.randomBytes(20).toString('hex');
  randomhash.id = "randomhash";
  document.getElementById("hash-paragraph").innerHTML = document.getElementById("randomhash").value;
}

<p id="hash-paragraph">This should be random string</p>
<input type="submit" name="hash-click" onclick="CreateHash()">





我是否缺少某些行或var randomhash = crypto.randomBytes(20).toString('hex');是错误的处理方式?

最佳答案

Web Crypto API标准中没有randomBytes方法。这是仅在加密NodeJS模块上可用的方法。在这种情况下,等效项为crypto.getRandomValues()MDN提供有关它的更多信息。

编辑:crypto.getRandomValues()方法,需要TypedArray作为参数,以将其与熵值一起馈入。我附上CodePen example,显示如何生成并将其转换为适合您需要的十六进制格式。

10-06 03:41