web-dev-qa-db-fra.com

chiffrer et déchiffrer md5

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

57
Tomer

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.

65
BIT CHEETAH

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.

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

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

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.

Pour stocker le mot de passe dans la base de données, faites un hash du mot de passe puis sauvegardez.

$password = Input::get('password_from_user'); 
$hashed = Hash::make($password); // save $hashed value

Pour vérifier le mot de passe, récupérez le mot de passe du compte dans la base de données.

// $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 
}
4
Somnath Muluk

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)

2
Mayur S

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.

2
ShuklaSannidhya