J'utilise le code $enrypt=md5($pass)
et insère $encrypt
dans la base de données. Je veux trouver un moyen de les décrypter. J'ai essayé d'utiliser un logiciel de décryptage, mais il est indiqué que le hachage doit comporter exactement 16 octets. est-il possible de le décrypter ou d'en faire un hachage md5 sur 16 octets?
Mon hash ressemble à ceci: c4ca4238a0b923820dcc
Comme déjà indiqué, vous ne pouvez pas décrypter MD5 sans tenter quelque chose comme le piratage par force brute, qui nécessite énormément de ressources, qui n'est ni pratique, ni contraire à l'éthique.
Cependant, vous pouvez utiliser quelque chose comme ceci pour chiffrer/déchiffrer les mots de passe/etc. en toute sécurité:
$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 );
}
Il serait encore plus sûr d’utiliser une méthode encryptée avec un sel, mais ce serait un bon pas en avant en utilisant simplement un hachage MD5.
Il n'y a aucun moyen de décrypter MD5. Eh bien, il y a, mais pas raisonnable moyen de le faire. C'est gentil du point.
Pour vérifier si quelqu'un entre le bon mot de passe, vous devez MD5 quel que soit l'utilisateur entré et voir s'il correspond à ce que vous avez dans la base de données.
/* you can match the exact string with table value*/
if(md5("string to match") == $res["hashstring"])
echo "login correct";
Cette question est étiquetée avec PHP. Mais beaucoup de gens utilisent maintenant le framework Laravel. Cela pourrait aider quelqu'un à l'avenir. C'est pourquoi je réponds pour Laravel. Il est plus facile de chiffrer et de déchiffrer avec des fonctions internes.
$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);
Remarque: veillez à définir une chaîne aléatoire de 16, 24 ou 32 caractères dans l'option key du fichier config/app.php. Sinon, les valeurs chiffrées ne seront pas sécurisées.
Mais vous ne devez pas utiliser crypter et décrypter pour l'authentification. Vous devriez plutôt utiliser hash make et check.
$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
}
Il n'est pas possible de déchiffrer MD5
le hash qui a créé. Vous avez besoin de toutes les informations pour déchiffrer la valeur MD5
utilisée lors du chiffrement.
Vous pouvez utiliser l’algorithme AES
pour chiffrer et déchiffrer
cryptage et décryptage JavaScript AES (Advanced Encryption Standard)
Les hachages ne peuvent pas être déchiffrés cochez cette case .
Si vous voulez chiffrer-déchiffrer, utilisez une fonction de chiffrement bidirectionnelle de votre base de données, telle que - AES_ENCRYPT (sous MySQL).
Mais je vais suggérer l'algorithme CRYPT_BLOWFISH pour stocker le mot de passe. Lisez ceci - http://php.net/manual/en/function.crypt.php et http://us2.php.net/manual/en/function.password- hash.php
Pour Blowfish by crypt()
function -
crypt('String', '$2a$07$twentytwocharactersalt$');
password_hash
sera introduit dans PHP 5.5.
$options = [
'cost' => 7,
'salt' => 'BCryptRequires22Chrcts',
];
password_hash("rasmuslerdorf", PASSWORD_BCRYPT, $options);
Une fois que vous avez enregistré le mot de passe, vous pouvez vérifier si l'utilisateur a saisi le bon mot de passe en le hachant à nouveau et en le comparant à la valeur stockée.