我正在使用代码 $enrypt=md5($pass)
并将 $encrypt
插入数据库。我想找到一种方法来解密它们。我尝试使用解密软件,但它说哈希应该正好是 16 个字节。有什么方法可以解密或使其成为 16 字节 md5 哈希?
我的哈希看起来像这样:c4ca4238a0b923820dcc
最佳答案
如前所述,如果不尝试诸如暴力破解之类的资源密集型、不实用且不道德的操作,就无法解密 MD5。
但是您可以使用这样的东西来安全地加密/解密密码/等:
$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 );
}
使用带盐的加密方法会更安全,但这将是比仅使用 MD5 哈希值更好的下一步。
关于php - 加密和解密md5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15194663/