如何解密使用Bcrypt散列的密码(出于显示目的)?

时间:2019-05-16 10:01:24

标签: laravel vue.js bcrypt

我正在创建一个允许用户使用用户名/密码组合登录的应用程序。 我有一个创建这些用户的管理员帐户,并且在将密码存储在mySQL DB中时对密码进行哈希处理。 但是,如果用户忘记了他/她的密码,我希望能够在此Administrator帐户中处于未隐藏状态的密码并能够对其进行更改。 这可能吗?如何解决?

我正在使用的技术是Laravel / Vue / mySQL / Bcrypt。

2 个答案:

答案 0 :(得分:3)

bcrypt是哈希算法,而不是加密算法。意味着它是不可逆的。

  

与其他盐腌哈希方法一样,Bcrypt也使用盐来避免对相同字符串使用相同的密码哈希。为此,首先随机生成盐,然后对密码和盐进行哈希处理。仅当验证时使用相同的盐才能验证。这就是为什么将盐与哈希一起保存的原因。

     

与其他任何迭代的哈希方法一样,Bcrypt无法直接反转,但是您可以尝试所有可能的密码以查看它们是否哈希为相同结果。如果使用加盐方法,则无法预先计算,因为您必须尝试使用​​实际的盐(如上所述)。

如果您寻求使用可以解密的密码,则可能需要考虑使用加密算法而不是哈希算法,或者可以看一下Laravel自己的方法encrypt(),尽管这需要您可以在应用程序上重写身份验证方法,并且可能被认为不太安全。

更多内容:https://laravel.com/docs/5.8/encryption

答案 1 :(得分:1)

你不能。

散列是一种单向数学运算,不能撤销。您只能创建一个新的哈希值,然后将两者进行比较。