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

编程入门 行业动态 更新时间:2024-10-10 11:21:46

Node.js:使用加密<a href=https://www.elefans.com/category/jswz/34/1771428.html style=模块创建MD5哈希是完全异步的吗?"/>

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哈希是完全异步的吗?

本文发布于:2024-05-07 05:08:25,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1754408.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:模块   js   Node   哈希是

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!