将php密码哈希转换为原始值是可能的吗?

时间:2019-03-21 04:21:12

标签: php

我正在使用代码

$password1 = password_hash($password, PASSWORD_BCRYPT);

并尝试将$encrypt插入数据库。

我想找到一种解密它们的方法。那可能吗??怎么样??抱歉,如果我错了。

3 个答案:

答案 0 :(得分:1)

否,您无法还原为原始值。如果您使用任何加密算法。否则,黑客将在几秒钟内炸毁您的网站。使用哈希算法的唯一目的是使用很大的值来保存和加密数据。有许多进行加密的算法,其中一些是md1和sha1。许多网站都提供可以立即恢复原始价值的功能。它需要蛮力来检索原始密码。

答案 1 :(得分:1)

不,您根本无法做到

根据设计,散列是不可逆的。那是设计目标。如果您可以反转算法的哈希结果,则该算法有问题,应避免使用。

暴力破解

有一种通过蛮力猜测密码的方法。

您可以:

  1. 列出您可以想象的所有可能的密码组合。然后,
  2. 您可以使用与您使用的算法相同的算法对每个 每个人。
  3. 如果其中之一与您的密码的哈希值匹配, 在那里。

有人已经为此目的制作了工具,您可以尝试一下。例如:

不要太有希望。如果您要破解的密码不在“您可以想象的所有可能的密码组合”列表中,那么您将无法通过这种方式获取密码。

通常如何使用散列密码

通常在将登录用户的密码输入与数据库密码哈希进行比较之前,先对哈希进行比较。通过相同的哈希处理过程的相同字符串将始终为您提供相同的结果。

例如,


$user = my_get_user($_POST['username']);
if ($user === null) {
  // login failed
  // ...
} else if ($_POST['password'] != password_hash($user->password, PASSWORD_BCRYPT)) {
  // login failed
  // ...
} else {
  // login success
  // ...
}

作为诚实服务提供商,您不应该知道用户的实际密码。散列是一种确保您完全不知道用户密码就可以检查其密码的方法。

答案 2 :(得分:-1)

取决于您的网站程序系统平台。对于某些站点,它是由密码和另一个有时称为“ salt” 的变量(具有秘密算法)结合而成的,并且确实取决于所使用的平台,因此可能有所不同。如果创建自己的程序,则可能只是为了测试代码就可以对自己的密码进行哈希处理和去哈希处理,然后可以逆转该过程,但是解密非常容易。还有一些将秘密密钥与您的哈希结合使用,还有其他方法可以实现此目的,但绝不能直接实现。

MD5哈希生成器http://www.miraclesalad.com/webtools/md5.php

MD5哈希解密https://www.md5online.org/md5-decrypt.html

我还没有看到使用简单的 hash / decrypt hash 算法作为密码验证过程的智能平台程序。但是您只能编写自己的代码以进行测试。