下面我使用sha1加密了一个字符串变量。现在我希望使用sha1函数解密数据,但我会去一些地方。有人会挺身而出,以正确的方式指导我。
以下是我的代码
<?php
$variable = "tiger";
echo $variable;
$encrypt = sha1($variable);
echo $encrypt;
$decrypt = sha1($encrypt);
echo $decrypt;
?>
我得到这样的输出
tiger
46e3d772a1888eadff26c7ada47fd7502d796e07
989df2c8b5ea37eb7cfde0527d94c01a15257002
答案 0 :(得分:23)
SHA-1是单向散列函数。
根据维基百科
加密散列函数是考虑的散列函数 实际上不可能反转,即重新创建输入数据 仅从哈希值开始。
http://en.wikipedia.org/wiki/Cryptographic_hash_function
因此你根本无法解密它。
答案 1 :(得分:1)
SHA1无法轻易被删除。
通过它的唯一途径是蛮力饼干
它们在网上广泛可用,如:http://md5-sha.com/md5-encrypt-hash-generator-online
这些网站有一个大型的已经散列密码的数据库,这可能非常有用
希望它有所帮助,祝你有个美好的一天。
答案 2 :(得分:0)
SHA-1无法直接解密。这就是它背后的想法:无法轻易解密的加密。
解决问题的唯一方法是蛮力:尝试通过编码短语并检查它们是否适合所提供的短语来猜测正确的结果。
如果你想使用SHA-1进行登录等操作:在SHA-1中编码输入的密码,并检查它是否与SHA-1中保存的密码相同。
答案 3 :(得分:0)
答案 4 :(得分:0)
你不能解密它。
哈希只是一种方式 - MD5和SHA-1都是单向哈希函数。
您必须在登录表单中创建输入的新哈希,并检查它是否等于存储的哈希值。
答案 5 :(得分:0)
如果没有,您可以使用自定义编码解码来加密密码,然后可以使用base64_encode()存储在db中,并可以使用base64_decode()在配置文件中使用
答案 6 :(得分:0)
简而言之,sha1()可以被解密。但是,只能使用相当简单的字符串。具有数字,大写,小写和特殊字符的密码会很困难,但是可以通过-
来解密Password12345之类的密码https://md5hashing.net/hash/sha1
***更多研究。 sha1()永远不会改变其加密字符的方式-例如,“ 6年前用sha1()加密的MyPassword STILL会在2020年今天输出” daa1f31819ed4928fd00e986e6bda6dab6b177dc”。
这些值显然存储在上述网站中,并且随着时间的流逝,可识别密码的库也会不断增加。
答案 7 :(得分:-1)
如果您无法解密并且想要显示该值,请使用此方法。
您正在创建加密密码的登录表单,并希望在其信息中心登录后向用户显示密码。
然后创建两列,一列用于encrypted_password,另一列用于not_encrypted_password,
$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_password并在仪表板中显示密码以供用户使用列not_encrypted_password。