最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Node的bcrypt和bcryptjs库有何不同?

运维笔记admin8浏览0评论

Node的bcrypt和bcryptjs库有何不同?

Node的bcrypt和bcryptjs库有何不同?

我需要在Node中使用bcrypt,并且像往常一样,有27个gazillion库可供选择。

npm上的两个顶级包是

  • bcrypt每月下载247k次
  • bcryptjs每月下载337k次
  • (还有什么需要考虑?)

他们有什么不同?是否有令人信服的理由或用例使用其中一个?

显然,一个是纯JS,另一个是绑定到本机C ++加密库。所以后者is faster比前者。

我读过应该选择fastest implementation of the slowest algorithm。所以这意味着我应该选择非JS的。然而,JS更受欢迎。为什么节点中的情况 - 是否有一个原因“纯js”包比使用node-gyp绑定到本机库的包更好?

回答如下:

在考虑仅在Node.js中运行依赖项时,没有理由不遵循给出的关于选择最快实现的建议,在这种情况下,它被证明是bcrypt的本机绑定。

对于isomorphic JavaScript,您希望它也可以在浏览器中运行,您不能使用本机绑定。所以在这种情况下,brcyptjs是纯JavaScript中最快的实现。

为了在同构设置中使用bcrypt,你的替代方法是将你的原生绑定编译成WebAssembly,如果可能的话。一些本机绑定目前还无法编译到WebAssembly,但是this package似乎至少有一个在wasm中实现的bcrypt子集,尽管与当前的两个选项相比,我无法审查其性能或安全性。

使用WebAssembly的缺点是显着更多的开发时间,特别是如果您不熟悉API,并且当bcryptjs已经在同一个性能范围内直接替换时,很难证明这一点。

发布评论

评论列表(0)

  1. 暂无评论