最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

Node.js:使用加密模块创建MD5哈希是完全异步的吗?

IT培训 admin 13浏览 0评论

Node.js:使用加密模块创建MD5哈希是完全异步的吗?

考虑到在Node 11环境中使用这段代码并使用标准的加密模块,我有两个问题(为了避免任何误解:我只是基于字符串来计算MD5哈希-不加密,不敏感数据) :

exports.calculateSomeHash = function(somestring, cb){
    var somehash = crypto.createHash('md5').update(somestring).digest('hex').toString();
    cb(null, somehash);   
};

1)可能会在回调被触发后立即无法完全完成hashSomeHash()返回空(somehash)值的情况?

2)Node的加密模块的这种哈希算法是否完全异步且无阻塞?如果没有,关于使用什么替代方法的任何建议?例如Hasha呢?

回答如下:

所有这些方法都是阻塞和同步的:

crypto.createHash()
hash.update()
hash.digest()
.toString()

因此,您的结果将完全同步。您根本不需要使用回调来传达结果。您可以直接返回结果:

exports.calculateSomeHash = function(somestring){
    return crypto.createHash('md5').update(somestring).digest('hex').toString();
};

FYI,加密库确实有一些异步方法,但是这些不是异步方法。

[calculateSomeHash()是否会返回空(somehash)值,因为一旦触发回调,哈希计算可能就不会完全完成?

没有它们是同步的。没有与时间相关的问题。

Node的加密模块的此哈希算法是否完全异步且无阻塞?

没有这是同步且阻塞的。这对您来说是否重要,可能取决于数据的大小。

内置加密模块似乎没有在node.js中内置异步哈希选项。因为哈希纯粹是CPU的工作,所以使它们无阻塞和异步的唯一方法是在本机代码中使用本机线程,使用WorkerThread或使用child_process。所有这些选项都会产生额外的开销,这些开销通常可能不是必需的。但是,如果这确实对您来说是个问题,则可以启动一个WorkerThread,然后向其发送一个您希望对其进行哈希处理的字符串,并可以向您发送回哈希值的消息。

Node.js:使用加密模块创建MD5哈希是完全异步的吗?

考虑到在Node 11环境中使用这段代码并使用标准的加密模块,我有两个问题(为了避免任何误解:我只是基于字符串来计算MD5哈希-不加密,不敏感数据) :

exports.calculateSomeHash = function(somestring, cb){
    var somehash = crypto.createHash('md5').update(somestring).digest('hex').toString();
    cb(null, somehash);   
};

1)可能会在回调被触发后立即无法完全完成hashSomeHash()返回空(somehash)值的情况?

2)Node的加密模块的这种哈希算法是否完全异步且无阻塞?如果没有,关于使用什么替代方法的任何建议?例如Hasha呢?

回答如下:

所有这些方法都是阻塞和同步的:

crypto.createHash()
hash.update()
hash.digest()
.toString()

因此,您的结果将完全同步。您根本不需要使用回调来传达结果。您可以直接返回结果:

exports.calculateSomeHash = function(somestring){
    return crypto.createHash('md5').update(somestring).digest('hex').toString();
};

FYI,加密库确实有一些异步方法,但是这些不是异步方法。

[calculateSomeHash()是否会返回空(somehash)值,因为一旦触发回调,哈希计算可能就不会完全完成?

没有它们是同步的。没有与时间相关的问题。

Node的加密模块的此哈希算法是否完全异步且无阻塞?

没有这是同步且阻塞的。这对您来说是否重要,可能取决于数据的大小。

内置加密模块似乎没有在node.js中内置异步哈希选项。因为哈希纯粹是CPU的工作,所以使它们无阻塞和异步的唯一方法是在本机代码中使用本机线程,使用WorkerThread或使用child_process。所有这些选项都会产生额外的开销,这些开销通常可能不是必需的。但是,如果这确实对您来说是个问题,则可以启动一个WorkerThread,然后向其发送一个您希望对其进行哈希处理的字符串,并可以向您发送回哈希值的消息。

发布评论

评论列表 (0)

  1. 暂无评论