javascript - Node : "expected Uint8Array" 中的 getRandomValues()

标签 javascript node.js npm cryptography

我正在尝试使用 getRandomValues() 函数来实现我正在练习的加密 REST API。我正在使用 Node 作为服务器。因此,我知道我没有一个窗口对象,它也包含通常包含“getRandomValues()”函数的加密对象。

每当我测试它时,我都会收到此错误:TypeError:预期的 Uint8Array

此错误发生在该函数的第三行:

getrand: function (places) {
  var array = new Uint32Array(20);
  getRandomValues(array);

  var ret = array[0];
  for (var i = 1; i < array.size; i++) {
    ret *= array[i];
  }

  ret = this.shiftnum(ret, 10);
  return ret;
},

另外,在上面我已经导入了 npm 包 var getRandomValues = require('get-random-values);

我查看了该包的文档,还看到了一些 stackoverflow 答案,其中有人给出了使用该包的示例。代码片段示例直接来自 package page在这里:

var getRandomValues = require('get-random-values');

var array = new Uint32Array(10);
getRandomValues(array);
// => [ 
// =>   183, 
// =>   76, 
// =>   18, 
// =>   177, 
// =>   73, 
// =>   9, 
// =>   50, 
// =>   248, 
// =>   216, 
// =>   104 
// => ] 

这也与我在示例中看到的格式相同。我还尝试制作一个非常简单的测试函数来调试此问题,如下所示:

test: function() {
  var array = new Uint32Array(10);
  getRandomValues(array);
  console.log(array[0]);
  return;
}

第三行也出现完全相同的问题。此外,我尝试将 var array = new Uint32Array(10); 行更改为 var array = new Uint8Array(10); 只是为了幽默这个错误,但错误仍然完全相同。

基本上,我试图找出为什么这行不通。我已经搞乱了几天了,无法弄清楚我做错了什么。

提前谢谢您。

最佳答案

该包旨在通过 require('crypto').randomBytes 在浏览器或 Node 上工作,因为您只希望它在 Node 上工作,因此您可以自己使用 randomBytes 函数

var crypto = require('crypto') 
var array = crypto.randomBytes(10).toJSON().data
console.log(array)
// [ 233, 217, 45, 204, 150, 171, 160, 70, 18, 138 ]

请注意,randomBytes 返回一个缓冲区

关于javascript - Node : "expected Uint8Array" 中的 getRandomValues(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37636694/

相关文章:

reactjs - 我无法导入我发布的 typescript 库,错误为 : "Module not found: Can' t resolve 'tqt' in . ..”

node.js - 如何通过 package.json 下载和安装所有 Node 模块?

Javascript:getElementById 与 getElementsById(两者都适用于不同页面)

javascript - Google Analytics 电子商务跟踪不适用于自定义 PHP

javascript - AJAX 联系表单在 Wordpress 中不起作用

javascript - 独特的验证在 Mongoose 中不起作用

node.js - 在expect().toBe()上应用toBeA()方法时,它会给出一个错误,无法读取未定义的属性

node.js - EC2 Ubuntu NGINX 配置 HTTPS 重定向给我错误 : ERR_TOO_MANY_REDIRECTS

android - 错误 : jest-haste-map: Haste module naming collision:

javascript - 如何在我的网站中找到 JavaScript 重定向