在nodejs代码中使用window.crypto
Use window.crypto in nodejs code
我正在尝试在nodejs脚本中使用window.crypto.getRandomValues
方法。根据我的理解,当我在节点中运行这样的简单代码时,没有window
元素:
var array = new Uint32Array(10);
window.crypto.getRandomValues(array);
这就是为什么我得到这个错误:
ReferenceError: window is not defined
如何在代码中使用此方法?
感谢
您可以使用内置的crypto
模块。它同时提供crypto.randomBytes()
和crypto.pseudoRandomBytes()
。
但是需要注意的是,这些方法为您提供了一个Buffer对象,您不能传入Uint32Array或类似的对象,因此API有点不同。
const crypto = require('crypto').webcrypto;
let a = new Uint8Array(24);
console.log(crypto.getRandomValues(a));
通过在requrie('crypto');
的末尾添加webcrypto
,这几乎与浏览器中的操作完全相同。
您可以使用与窗口元素相同的模块:获取随机值
安装:
npm install get-random-values --save
使用它:
var getRandomValues = require('get-random-values');
var array = new Uint32Array(10);
getRandomValues(array);
以下是如何在节点16中使用TypeScript。我正在劫持web类型并覆盖@types/node类型,这些类型缺少webcrypto。
import { webcrypto } from 'crypto'
const crypto = webcrypto as unknown as Crypto
const random = crypto.getRandomValues(new Uint8Array(24))
这个沙箱将在节点16中工作,但stackblitz在接下来的几个月内不会发布节点16。https://stackblitz.com/edit/koa-starter-wychx9?file=package.json
问题:github.com/denoland/node_deno_shims/issues/56
我也遇到了这个问题,我用的方式解决了它
import * as crypto from 'node:crypto'
export function randomChar() {
return crypto.webcrypto.getRandomValues(new BigUint64Array(1))[0].toString(36)
}
参考:如何在nodejs中使用getRandomValues()?
在Node.js 19中,您可以直接使用它(不使用window.
)
const array = new Uint32Array(10);
crypto.getRandomValues(array);
相关文章:
- 正在寻找比$(document).ready慢的$(window).load的替代方案
- 直接下载文件,而不是从window.open(url)
- $window.ga在AngularJS事件中未定义
- 如何将PDF作为二进制文件传递到window.open()
- window.onload没有'无法在Android WebView中工作
- window.location替换并传递URL历史记录条目中的变量
- window.on.scroll事件未启动
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- 为什么window.open不打开一个以变量形式给出的链接
- window.location使用jquery mobile实现chrome跳转
- window.opener.document在ie中不起作用
- window.onpopstate不工作;当我导航回页面时,不会发生任何事情
- 未捕获的类型错误:topFrame.window.changeSelectedBarStyle不是函数,原因是什么
- 通过window.opener将弹出窗口中的值传递给父窗口
- $(document).height和$(window).heaght都返回相同的值-使用的是正确的doctype
- 如何在`window.open`之后执行回调
- Windows.Open 在 window.Location 工作时不起作用
- javaScript window.crypto.getRandomvalues在safari浏览器中不起作用
- 在nodejs代码中使用window.crypto
- 用Crypto Node.js加密,用window解密.crypto in Service-Worker