【问题标题】:How to decrypt hashed password using php?如何使用php解密散列密码?
【发布时间】:2012-08-29 08:52:22
【问题描述】:

我目前正在使用 MD5 和 SHA1 将我的用户密码保存在数据库中,但我不知道如何以纯文本形式取回它们。我试图回滚用于加密密码的相同代码,但它给了我一个错误。

我用来加密密码的代码:

   $hashedpassword = md5(md5(sha1(sha1(md5($normalpassword)))));

我试着像这样做同样的事情

   $normalpassword = md5(md5(sha1(sha1(md5($hashedpassword)))));

然后我意识到这很有趣:(!!请帮帮我...

【问题讨论】:

  • 哈希是一种方法,你永远无法恢复它,唯一的方法是使用暴力攻击!
  • @MarkGarcia 怎么会有不同的结果?
  • 为什么有这么多反对票?你问一个问题来学习,这显然在这里奏效。我可以想象许多其他人在谷歌上搜索类似的东西。
  • @MarkGarcia 你说的毫无意义。 MD5 和 SHA1 仅取决于它们的输入。其组成也是如此。
  • @Ineentho 因为这不是一个特别好的问题。这表明OP实现了他根本不理解的东西。如果他在文档中查找 md5 和 sha1 函数,那么这个问题甚至都没有必要。

标签: php


【解决方案1】:

MD5 和 SHA-1 是单向哈希函数,这意味着您无法从哈希值中取回原始字符串。

【讨论】:

  • 好的..我明白了!所以我每次登录时都需要对用户密码进行哈希处理,并检查用户输入的哈希密码是否与数据库中的密码匹配……好的,谢谢……
【解决方案2】:

你不能。散列是一种方法,您必须在登录表单中生成输入的新散列并检查它是否等于存储的散列。

【讨论】:

    【解决方案3】:

    散列不是加密。

    像 MD5 和 SHA1 这样的哈希函数是不能反转的,它只能被验证。这通常是使用散列函数的重点,因为攻击者无法使用散列检索明文密码(其他攻击,例如使用彩虹表也是可能的)。

    更多详情可以在这里找到:http://en.wikipedia.org/wiki/Cryptographic_hash_function

    如果您想在数据库中存储散列密码,请查看PHPass。它是一个很好的 php 类,可以尽可能好地散列和验证密码,并广泛用于现代基于 php 的 Web 应用程序中。

    【讨论】:

      【解决方案4】:

      如果你最终想要它们回来,你为什么还要加密它们?正是因为无法以明文形式取回密码,所以使用哈希算法。

      如果您想要它们,请使用对称密码。

      【讨论】:

      • 我正在为我的脚本设计一个 Facebook Connect 日志系统,因此我无法更改密码加密的原始代码。我的想法是取回它们并做一些事情......无论如何 thnx..
      猜你喜欢
      • 2019-02-15
      • 2021-09-26
      • 2015-08-13
      • 2012-05-30
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      • 2011-05-10
      • 1970-01-01
      相关资源
      最近更新 更多