加密和解密 md5

我使用代码 $enrypt=md5($pass)和插入 $encrypt到数据库。我想找到解密它们的方法。我试过用一个解密软件,但它说散列应该正好是16个字节。有没有办法解密它或使它成为一个16字节的 md5散列?

我的散列看起来像这样: c4ca4238a0b923820dcc

522319 次浏览

没有办法解密 MD5。有,但是没有 合情合理的方法。这才是重点。

要检查某人是否输入了正确的密码,无论用户输入了什么,您都需要 MD5,并查看它是否与数据库中的密码相匹配。

无法对哈希进行 看看这个解密。

如果要进行加密-解密,可以使用数据库的双向加密函数,如 -AES _ ENCRYPT (在 MySQL 中)。

但是我建议使用 CRYPT _ BLOWFISH 算法来存储密码

对于河豚由 crypt()函数-

crypt('String', '$2a$07$twentytwocharactersalt$');

password_hash将在 PHP 5.5中引入。

$options = [
'cost' => 7,
'salt' => 'BCryptRequires22Chrcts',
];
password_hash("rasmuslerdorf", PASSWORD_BCRYPT, $options);

一旦您存储了密码,您就可以通过再次散列并将其与存储的值进行比较来检查用户是否输入了正确的密码。

如前所述,如果不尝试诸如暴力黑客这样的极端资源密集型、不实用且不道德的事情,就无法解密 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 );
}

使用带有 salt 的加密方法将更加安全,但是这将是仅仅使用 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 文件的 key 选项中,否则,加密的值 将不再安全。

但是您不应该使用加密和解密进行身份验证,而应该使用散列生成和检查。

若要在数据库中存储密码,请对密码进行哈希处理,然后保存。

$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
}

这是不可能的解密 MD5散列创建。您需要所有信息来解密在加密过程中使用的 MD5值。

可以使用 AES算法进行加密和解密

JavaScript AES 加密和解密(高级加密标准)