bcrypt与节点一起使用的替代方案是什么?

时间:2013-11-06 20:55:43

标签: node.js encryption bcrypt

我已经尝试了几天才能在我的Windows机器上安装bcrypt而没有运气。其中一个依赖项(Windows 7 SDK)不希望安装,即使我已尝试过网络上的许多建议,它只是拒绝合作。

我需要一个很好的替代bcrypt,它没有任何依赖。

4 个答案:

答案 0 :(得分:16)

查看https://npmjs.org/package/bcryptjs,它与bcrypt完全兼容,没有依赖项。

或者https://npmjs.org/package/simplecrypt如果你不想要加密样板,只需要加密和解密字符串。

答案 1 :(得分:8)

截至 2020年4月24日,在scrypt模块中使用crypto构建了一种很好的散列密码方式

// Using the built in crypto module

const { scryptSync, randomBytes } = require("crypto");


// Any random string here (ideally should be atleast 16 bytes)

const salt = randomBytes(16).toString("hex")


// Pass the password string and get hashed password back
// ( and store only the hashed string in your database)

const getHash = (password) => scryptSync(password, salt, 32).toString("hex");

答案 2 :(得分:0)

如果有人遇到类似的问题,则可以尝试bcyrptjs,它是用JavaScript编写的bcrypt,具有零依赖关系,并且与C ++ bcrypt兼容。

答案 3 :(得分:-1)

您应该真正使用内置加密模块来满足加密需求。它基本上是对OpenSSL的绑定,OpenSSL是一个快速,稳定,安全且经过良好审查的加密库。尝试实现自己的加密(或使用其他人未经验证的实施加密的尝试)是灾难的一种方法。

如果您要加密数据,您只需要调用crypto.createCipher,它将返回可读/可写Stream。将数据写入流中,它将使用加密数据发出数据事件。

例如:

var stream = crypto.createCipher('aes192', 'mysecretpassword');
stream.on('data', function(enc) {
    // enc is a `Buffer` with a chunk of encrypted data
});

stream.write('some secret data');
stream.end();