我使用的代码$enrypt=md5($pass)
并插入$encrypt
到数据库中。 我想找出一种方法来解密。 我试着用解密软件,但它说的哈希应该正好是16个字节。 有没有办法对其进行解密或使它成为一个16字节的MD5哈希?
我的哈希看起来是这样的: c4ca4238a0b923820dcc
我使用的代码$enrypt=md5($pass)
并插入$encrypt
到数据库中。 我想找出一种方法来解密。 我试着用解密软件,但它说的哈希应该正好是16个字节。 有没有办法对其进行解密或使它成为一个16字节的MD5哈希?
我的哈希看起来是这样的: c4ca4238a0b923820dcc
如前所述,你不能没有试图像强力黑客行为,这是非常耗费资源的,不实际的,和不道德的解密MD5。
但是你可以使用这样的加密/解密密码的/ etc安全:
$input = "SmackFactory";
$encrypted = encryptIt( $input );
$decrypted = decryptIt( $encrypted );
echo $encrypted . '<br />' . $decrypted;
function encryptIt( $q ) {
$cryptKey = 'qJB0rGtIn5UB1xG03efyCp';
$qEncoded = base64_encode( mcrypt_encrypt( MCRYPT_RIJNDAEL_256, md5( $cryptKey ), $q, MCRYPT_MODE_CBC, md5( md5( $cryptKey ) ) ) );
return( $qEncoded );
}
function decryptIt( $q ) {
$cryptKey = 'qJB0rGtIn5UB1xG03efyCp';
$qDecoded = rtrim( mcrypt_decrypt( MCRYPT_RIJNDAEL_256, md5( $cryptKey ), base64_decode( $q ), MCRYPT_MODE_CBC, md5( md5( $cryptKey ) ) ), "\0");
return( $qDecoded );
}
使用encypted方法与盐会更安全,但这只是使用MD5哈希的好下一步的过去。
有没有办法解密MD5。 那么,有,但没有合理的办法做到这一点。 这就是那种点。
要检查是否有人在输入正确的密码,您需要任何用户输入的MD5,并看它是否符合你所拥有的数据库。
/* you can match the exact string with table value*/
if(md5("string to match") == $res["hashstring"])
echo "login correct";
这个问题被标记用PHP。 但是,现在许多人都使用Laravel框架。 它可以帮助别人的未来。 这就是为什么我回答了Laravel。 它更易于加密与内部功能解密。
$string = 'c4ca4238a0b923820dcc';
$encrypted = \Illuminate\Support\Facades\Crypt::encrypt($string);
$decrypted_string = \Illuminate\Support\Facades\Crypt::decrypt($encrypted);
var_dump($string);
var_dump($encrypted);
var_dump($decrypted_string);
注意:一定要设置一个16,24,或32个字符的随机字符串在config / app.php文件的密钥选项。 否则,加密值将不保。
但是,你不应该使用加密和解密认证。 相反,你应该使用哈希品牌和检查。
$password = Input::get('password_from_user');
$hashed = Hash::make($password); // save $hashed value
// $user is database object
// $inputs is Input from user
if( \Illuminate\Support\Facades\Hash::check( $inputs['password'], $user['password']) == false) {
// Password is not matching
} else {
// Password is matching
}
哈希无法解密检查了这一点 。
如果要加密,解密,使用数据库等构成的双向加密功能 - AES_ENCRYPT(在MySQL)。
但我会建议算法crypt_blowfish的存储密码。 阅读这- http://php.net/manual/en/function.crypt.php和http://us2.php.net/manual/en/function.password-hash.php
对于由河豚crypt()
函数-
crypt('String', '$2a$07$twentytwocharactersalt$');
password_hash
将在PHP 5.5中引入。
$options = [
'cost' => 7,
'salt' => 'BCryptRequires22Chrcts',
];
password_hash("rasmuslerdorf", PASSWORD_BCRYPT, $options);
一旦你已经保存了密码,就可以检查用户是否再次散列并将其与存储的值进行比较,输入正确的密码。
这是不可能解密MD5
这创造哈希值。 你需要的所有信息解密MD5
这是在加密过程中使用的值。
您可以使用AES
算法来加密和解密
JavaScript的AES加密和解密(高级加密标准)