加密和解密md5

Tom*_*mer 59 php security passwords hash md5

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

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

BIT*_*TAH 66

如前所述,如果不尝试像强力黑客这样资源密集,不实用和不道德的事情,你就无法解密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 );
}
Run Code Online (Sandbox Code Playgroud)

使用带盐的encypted方法会更安全,但这只是使用MD5哈希的一个很好的下一步.

  • 在PHP 7.1.0中已经不推荐使用mcrypt_encrypt。强烈建议不要使用此功能。 (2认同)

Nie*_*sol 16

没有办法解密MD5.嗯,有,但没有合理的方法去做.这就是重点.

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

  • 这是一个过于简单的放置方式:5 + 5是10,但如果你只有10,你不知道原始数字是5和5.但是,如果你知道算法(取两个数字并添加它们),然后你可以将10反转为3 + 7并且它将被接受,因为结果是相同的. (12认同)
  • 不,没有办法解密MD5,因为MD5不是密码.但是,正如您可能意味着它的可逆性,您只能记住输入+输出对以便稍后查找或尝试查找冲突.但你不能'解密'它. (3认同)

小智 5

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

if(md5("string to match") == $res["hashstring"])
 echo "login correct";
Run Code Online (Sandbox Code Playgroud)


Som*_*luk 5

这个问题是用 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);
Run Code Online (Sandbox Code Playgroud)

注意:请务必在 config/app.php 文件的 key 选项中设置一个 16、24 或 32 个字符的随机字符串。否则,加密的值将不安全。

但是您不应该使用加密和解密进行身份验证。相反,您应该使用哈希制作和检查。

要将密码存储在数据库中,请对密码进行散列,然后保存。

$password = Input::get('password_from_user'); 
$hashed = Hash::make($password); // save $hashed value
Run Code Online (Sandbox Code Playgroud)

要验证密码,请从数据库中获取存储的帐户密码

// $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 
}
Run Code Online (Sandbox Code Playgroud)


May*_*r S 5

无法解密MD5创建的哈希值。您需要所有信息来解密MD5加密期间使用的值。

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

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