- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
crypto = require('crypto')
async function generateToken(){
await crypto.randomBytes(256,function(ex, buffer) {
if (ex) {
console.log("error generating token");
}
var token = crypto
.createHash('sha1')
.update(buffer)
.digest('hex');
console.log(token);
}
)}
console.log("before token");
generateToken();
console.log("after token");
在上面的代码中,我想同步 generateToken()
方法。所以我向函数添加了 async
和 await
,但我没有得到预期的输出
before token
7f4f27037cd7dd65bd03d7e2fe859e608b9eebe2
after token
我得到的输出是
before token
after token
7f4f27037cd7dd65bd03d7e2fe859e608b9eebe2
我在上面的代码中做错了什么?
编辑:下面的代码可以工作,但它不是同步的。
crypto = require("crypto");
function generateToken() {
return new Promise((resolve, reject) => {
crypto.randomBytes(256, function(ex, buffer) {
if (ex) {
reject("error generating token");
}
const token = crypto
.createHash("sha1")
.update(buffer)
.digest("hex");
resolve(token);
});
});
console.log(token);
}
console.log("before token");
generateToken().then((token) => {
console.log(token);
console.log("after token");
});
最佳答案
const crypto = require("crypto");
async function generateToken() {
const buffer = await new Promise((resolve, reject) => {
crypto.randomBytes(256, function(ex, buffer) {
if (ex) {
reject("error generating token");
}
resolve(buffer);
});
});
const token = crypto
.createHash("sha1")
.update(buffer)
.digest("hex");
console.log(token);
return token;
}
console.log("before token");
generateToken().then(token => {
console.log("after token", token);
});
你也可以在其他异步函数中调用它
async function otherFunction() {
try {
console.log("before token");
const token = await generateToken();
console.log("after token", token);
} catch (e) {
console.error(e)
}
}
关于node.js - 如何同步 Node js 中加密模块的 crypto.randomBytes() 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51096273/
在此方法的文档中,它声明如果没有足够的熵来生成数据,它将抛出异常。我的问题与熵有关。它是如何生成的,您能否通过提供足够的熵来防止抛出异常?抛出异常的频率有多高,还是未知? crypto.randomB
我将构建一个经常使用 crypto.randomBytes() 的服务。据我所知,它正在阻塞 I/O。有没有办法至少加快这个过程?多核或多线程能做什么吗? 最佳答案 这里有一些详细信息:How ran
我有以下代码,基于 http://nodejs.org/docs/v0.6.9/api/crypto.html#randomBytes crypto.randomBytes 32, (ex, buf)
我尝试使用 crypto.randomBytes() 方法生成非常大量(> 1GB)的伪随机数据,但我无法为耗尽的熵源生成异常以查看行为是什么我的应用程序以防出现这种可能的异常。 来自 Node.JS
crypto.randomBytes(20).toString('hex')有多随机? 就这么简单,我只需要知道。 最佳答案 crypto.randomBytes() 的随机性如何?通常,足够随机以用
在什么情况下可以接受(从安全角度)使用 Node 的 crypto.pseudoRandomBytes而不是加密强的 crypto.randomBytes ? 我认为 pseudoRandomByte
摘要 我有一个函数,我使用 crypto.randomBytes 生成 token ,但在从函数返回 token 时遇到问题。我想从 createResetToken 返回 token 。我的功能如下
我在使用 NodeJS 加密和 crypto.randomBtyes 函数时遇到了一个奇怪的问题。我检测到似乎最近才出现在我的 NodeJS/Typescript 3.2 应用程序中的奇怪行为。 Th
Node.js 文档强烈反对使用 crypto.randomBytes()。然而,正如我在 StackOverflow 的回答中读到的那样,在所有随机字符串生成方法(例如使用时间戳等)中,实现最高熵的
crypto.randomBytes(48, function (err, buffer) { if (err) { x = false;
我正在导入 ethereumjs-wallet在 angular4 中, import EthereumWallet from 'ethereumjs-wallet'; var wallet = Et
如何使用 crypto.randomBytes 生成特定范围内的随机数? 我希望能够生成这样的随机数: console.log(random(55, 956)); // where 55 is min
如何将从 crypto.randomBytes 返回的字节数组转换为 float ?我正在为 Math.random() 编写一个小的替代品 最佳答案 假设您有一系列随机选择的字节,均匀分布在 [0,
我需要一个加密安全的随机数生成器来替换 Math.random() 我遇到了 crypto.randomBytes() 但是,它返回一个字节数组。有什么方法可以将字节数组变成0-1(以便与Math.r
我正在使用以下方法为 iOS 构建 zeromq 库: https://github.com/drewcrawford/libzmq-ios 除了一些警告出现 3 次之外,构建日志看起来很好: CC
我是新手。使用 amazon-cognito-identity-js 时出错时出现以下错误npm 包如下所示 _global.util.crypto.lib.randomBytes is not a
crypto = require('crypto') async function generateToken(){ await crypto.randomBytes(256,function(e
我正在尝试在 Node.js 中生成恰好 6 的随机数字,这需要加密安全。这是我的代码: var crypto = require('crypto'); crypto.randomBytes(2, f
由于 1000000 不是 2 的幂,因此随机生成从 0 到 999999 的精确值的正确方法是什么? 这是我的方法: 使用crypto.randomBytes生成3个字节并转换为hex 使用前 5
大家好,我主要是想重新创建这个 Node 包: https://github.com/seishun/node-steam-crypto/blob/master/index.js 在 golang 中
我是一名优秀的程序员,十分优秀!