【问题标题】:How to decrypt sha1 in php?如何在php中解密sha1?
【发布时间】:2015-07-24 16:03:24
【问题描述】:

下面我使用 sha1 加密了一个字符串变量。现在我希望使用 sha1 函数解密数据,但我要去某个地方。请有人出面并以适当的方式指导我。

下面是我的代码

<?php
   $variable  = "tiger";
   echo $variable;
   $encrypt = sha1($variable);
   echo $encrypt;
   $decrypt = sha1($encrypt);
   echo $decrypt;
 ?>

我得到这样的输出

tiger
46e3d772a1888eadff26c7ada47fd7502d796e07
989df2c8b5ea37eb7cfde0527d94c01a15257002

【问题讨论】:

  • 我认为您误解了一些东西 - sha1 不是一种可以(轻松)解密的加密方式(请参阅this 答案)
  • 无法解密sha1。使用sha1,你可以散列一个字符串,一旦一个字符串被散列,你就不能解密它。
  • 也许您认为sha1() 是一个简单的凯撒密码,例如str_rot13(): $variable = "tiger"; echo $variable; $encrypt = str_rot13($variable); echo $encrypt; $decrypt = str_rot13($encrypt); echo $decrypt;
  • 你用这个做什么?你不能解密!这些是使哈希算法不可逆的一种方式,但是可以使用“彩虹表”来确定原始内容是什么。
  • 您无法解密 sha1() 因为 sha1 不是加密过程。它使数据散列。所以你不能以原始形式检索它

标签: php sha1


【解决方案1】:

简而言之,sha1() 可以被解密。然而,只有相当简单的字符串可以。带有数字、大小写和特殊字符的密码将被证明是困难的,但 Password12345 之类的密码可以通过 -

https://md5hashing.net/hash/sha1

***多一点研究。 sha1() 永远不会改变它加密字符的方式 - 例如,“6 年前用 sha1() 加密的 MyPassword 仍然在 2020 年的今天给出“daa1f31819ed4928fd00e986e6bda6dab6b177dc”的输出。

这些值显然存储在上述网站中,并且随着时间的推移,可识别密码库会增加。

【讨论】:

    【解决方案2】:

    如果没有,您可以对密码使用自定义编码解码,然后您可以使用 base64_encode() 存储在数据库中,使用 base64_decode() 用于配置文件等

    【讨论】:

      【解决方案3】:

      如果你不能解密并且你想显示值,那么使用这个方法。

      例如,您正在创建密码加密的登录表单,并希望在登录用户仪表板后向用户显示密码。

      然后创建两列,一列用于 encrypted_pa​​ssword,另一列用于 not_encrypted_pa​​ssword,

      $not_encrypted_password="password";
      $encrypted_password =sha1("password");
      $sql = mysqli_query($conn,"INSERT INTO user (not_encrypted_password,encrypted_password)VALUES('$not_encrypted_password','$encrypted_password')");
      

      通过这种方式,您可以对列 encrypted_pa​​ssword 使用登录,并在仪表板中为用户使用列 not_encrypted_pa​​ssword 显示密码。

      【讨论】:

      • 永远不要在数据库中存储未加密的密码。
      【解决方案4】:

      SHA-1 不能直接解密。这就是它背后的理念:不易解密的加密。

      解决它的唯一方法是蛮力:尝试通过编码短语并检查它们是否符合提供的短语来猜测正确的结果。

      如果您想使用 SHA-1 进行登录等操作:请将输入的密码也编码为 SHA-1,并检查它是否与保存在 SHA-1 中的密码相同。

      【讨论】:

        【解决方案5】:

        你不能解密它。

        散列只是一种方式 - MD5 和 SHA-1 都是单向散列函数。

        您必须在登录表单中创建输入的新哈希并检查它是否等于存储的哈希。

        【讨论】:

          【解决方案6】:

          SHA1 哈希不能被解密,但您可以在许多不同的网站上在线尝试,这些网站都有密码数据库,它是 SHA1 哈希。所以你可以试试下面的在线工具:

          SHA1 Decoder Online

          SHA1 tool

          【讨论】:

            【解决方案7】:


            SHA1 不能轻易被解密。
            通过它的唯一方法是暴力破解。
            它们在网上广泛可用,例如:http://md5-sha.com/md5-encrypt-hash-generator-online
            这些网站有一个庞大的已散列密码数据库,非常有用。
            希望对您有所帮助,祝您有美好的一天。

            【讨论】:

              【解决方案8】:

              SHA-1 是一种单向哈希函数。

              根据维基百科

              密码散列函数是一个散列函数,它被认为是 几乎不可能反转,即重新创建输入数据 仅从其哈希值。

              http://en.wikipedia.org/wiki/Cryptographic_hash_function

              因此你根本无法解密它。

              【讨论】:

              • 但你可以做到
              • 我的意思是你可以用蛮力做到这一点。但要做到这一点需要一些时间和资源。
              • 我知道的唯一暴力方法不使用您的哈希值作为输入。相反,它尝试通过使用宽输入集来产生与散列相同的结果,并将每个计算的输出与散列进行比较。所以这个过程不涉及解码。
              猜你喜欢
              • 1970-01-01
              • 2011-12-05
              • 2013-08-28
              • 2012-07-05
              • 2013-01-15
              • 2021-10-28
              • 2015-08-05
              • 2022-11-16
              • 2021-09-10
              相关资源
              最近更新 更多