【问题标题】:Is there a way to decrypt Salt Hashing in JavaScript?有没有办法在 JavaScript 中解密 Salt Hashing?
【发布时间】:2021-12-26 11:51:57
【问题描述】:

假设我有这个哈希用户密码的后端代码

const salt = await bcrypt.genSalt(10);
const hashedPass = await bcrypt.hash(req.body.password, salt);

对于身份验证,我只使用 Bcrypt 比较函数

const validated = await bcrypt.compare(req.body.password, user.password);

它有效。但是假设我也想知道密码。有bcrypt 功能吗?因为据我所知,它唯一能做的就是比较密码。

【问题讨论】:

  • 哈希按设计是不可逆的。而且 bcrypy 按设计更难找到散列,以防止预先计算一个包含许多密码的表来检查散列。由于这两个原因以及更多原因,您尝试做的不是您应该做的。
  • 请问你为什么要解密它?

标签: javascript reactjs jsx bcrypt


【解决方案1】:

散列(MD5 盐散列、SHA256/SHA512 或盐散列)是一种单向函数,您无法对其进行解密,但您可以使用带有 diffie hellman 密钥交换技术的 RSA 加密。

Bcrypt 库用于哈希密码,如果你想找回密码,你不能这样做。

改为使用 RSA 和 Deffie hellman 密钥交换技术来安全地共享密钥。

【讨论】:

  • 所以 Bcrypt 是不行的?
  • 是的,如果你想加密消息,你可以使用 crypto-js 库。在这里您可以找到有关crypto-js的更多信息
  • 结帐this video 了解一般情况,this video 了解defie hellman 密钥交换算法。
【解决方案2】:

密码散列的全部意义在于进行不可逆转的操作,以使包括您在内的任何其他人都无法撤消该过程并获取密码。所以答案是你不知道。一旦它被散列,就没有回头路了。

【讨论】:

    猜你喜欢
    • 2013-12-07
    • 2021-01-10
    • 2022-01-01
    • 2021-06-04
    • 1970-01-01
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 2020-02-16
    相关资源
    最近更新 更多