使用node.js加密/解密密码

使用node.js加密/解密密码,node.js,bcrypt,Node.js,Bcrypt,我正在使用bcryptnodejs模块 我对加密和比较密码感到满意,但似乎无法解密密码 我想知道: 如何使用nodejs加密/解密密码(您使用的是哪个模块或方法) 是否有办法解密使用bcrypt模块编码的密码 谢谢 不能用bcrypt解密密码——这是一种单向算法。您要做的是存储原始(盐渍)密码的散列。然后你把(咸的)猜测搞乱。如果哈希匹配,则猜测是正确的 幸运的是,节点bcrypt库为您完成了所有这些,因此您只需要提供纯文本猜测和散列(来自数据库) 例如,您可以执行以下操作: // "

我正在使用
bcrypt
nodejs模块

我对加密和比较密码感到满意,但似乎无法解密密码

我想知道:

  • 如何使用nodejs加密/解密密码(您使用的是哪个模块或方法)
  • 是否有办法解密使用
    bcrypt
    模块编码的密码

  • 谢谢

    不能用bcrypt解密密码——这是一种单向算法。您要做的是存储原始(盐渍)密码的散列。然后你把(咸的)猜测搞乱。如果哈希匹配,则猜测是正确的

    幸运的是,
    节点bcrypt
    库为您完成了所有这些,因此您只需要提供纯文本猜测和散列(来自数据库)

    例如,您可以执行以下操作:

    // "password"; usually stored in the database in the user's row.
    var stored_hash = '$2a$10$vxliJ./aXotlnxS9HaJoXeeASt48.ddU7sHNOpXC/cLhgzJGdASCe'
    bcrypt.compare(guess, stored_hash, function(err, res) {
    
    });
    

    更好的方法是使用此节点模块,它可以加密您的密码,并允许将加密版本与实际版本进行对比。

    是的,我就是这么做的,但如果您想使用外部API(例如facebook)对用户进行身份验证,并将同一用户的凭据返回客户端,这可能很有用。@Ludo您需要知道他们的密码还是只需要知道他们的姓名以及他们是否可以成功登录?这是像Facebook connect这样的axternal登录API提供的,身份验证是在Facebook.com上进行的,不在您的域中,facebook会将用户重定向到您用哈希指定的路径,然后您就知道该用户已通过身份验证。@Mustafa我需要一个在facebook注册期间在服务器端自动生成的密码,以便将其显示在用户的管理页上。您不应该向用户显示密码。他们应该知道自己的密码,如果忘记了,可以提供一些机制来创建一个新的密码(可能通过发送电子邮件链接重置为他们注册的电子邮件)。公开向用户显示密码是一个可怕的想法(无意冒犯)。想象一下有人劫持会话的情况。如果向劫机者显示被劫持用户密码,劫机者现在拥有实际密码,而不仅仅是会话访问权限。出于同样的原因,您应该要求在更改敏感信息时输入密码。如果您自动生成密码,请通过电子邮件发送给他们一次,或者在注册时显示一次。在这之后,你应该永远不需要公开显示他们的密码。问题是我不再有“实际密码”,但我会做不同的事情,因为显然每个加密系统都是这样工作的。