加密和解密MD5(encrypt and decrypt md5)

2019-07-20 21:51发布

我使用的代码$enrypt=md5($pass)并插入$encrypt到数据库中。 我想找出一种方法来解密。 我试着用解密软件,但它说的哈希应该正好是16个字节。 有没有办法对其进行解密或使它成为一个16字节的MD5哈希?

我的哈希看起来是这样的: c4ca4238a0b923820dcc

Answer 1:

如前所述,你不能没有试图像强力黑客行为,这是非常耗费资源的,不实际的,和不道德的解密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哈希的好下一步的过去。



Answer 2:

有没有办法解密MD5。 那么,有,但没有合理的办法做到这一点。 这就是那种点。

要检查是否有人在输入正确的密码,您需要任何用户输入的MD5,并看它是否符合你所拥有的数据库。



Answer 3:

/* you  can match the exact string with table value*/

if(md5("string to match") == $res["hashstring"])
 echo "login correct";


Answer 4:

这个问题被标记用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 
}


Answer 5:

哈希无法解密检查了这一点 。

如果要加密,解密,使用数据库等构成的双向加密功能 - 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);

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



Answer 6:

这是不可能解密MD5这创造哈希值。 你需要的所有信息解密MD5这是在加密过程中使用的值。

您可以使用AES算法来加密和解密

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



文章来源: encrypt and decrypt md5