openssl_encrypt et bdd
Posté : 16 sept. 2018, 14:06
Bonjour,
J'avoue m'arracher les yeux depuis hier et je pense que je finis par ne plus voir l'évidence... Je fais du coup appel à vous, car mes recherches ne donnent rien.
J'essaie d'utiliser openssl_encrypt (et donc decrypt), sans y parvenir, et je rencontre deux problèmes.
Je précise que je cherche à décrypter le mot de passe pour l'utiliser ailleurs (le mot de passe d'accès à mon site étant lui chiffré de manière irréversible)
- Premier problème, openssl_decrypt ne me renvoie pas le mot de passe d'origine lorsque je décrypte dans la même fonction que celle qui fait le cryptage. Pire, il me renvoie mon uniqueid !
- Second problème, si j'injecte le tout dans la bdd, alors il ne décrypte plus rien (je suppose un problème d'encodage ? Mais je n'ai pas vraiment la main dessus ? Le champ de la bdd est en utf8_unicode_ci.
Le code :
-- Dans mon profile.php :
-- Dans mon class_user.php :
Le résultat des echo :
Merci
J'avoue m'arracher les yeux depuis hier et je pense que je finis par ne plus voir l'évidence... Je fais du coup appel à vous, car mes recherches ne donnent rien.
J'essaie d'utiliser openssl_encrypt (et donc decrypt), sans y parvenir, et je rencontre deux problèmes.
Je précise que je cherche à décrypter le mot de passe pour l'utiliser ailleurs (le mot de passe d'accès à mon site étant lui chiffré de manière irréversible)
- Premier problème, openssl_decrypt ne me renvoie pas le mot de passe d'origine lorsque je décrypte dans la même fonction que celle qui fait le cryptage. Pire, il me renvoie mon uniqueid !
- Second problème, si j'injecte le tout dans la bdd, alors il ne décrypte plus rien (je suppose un problème d'encodage ? Mais je n'ai pas vraiment la main dessus ? Le champ de la bdd est en utf8_unicode_ci.
Le code :
-- Dans mon profile.php :
Code : Tout sélectionner
if ($geocaching_password !== '')
{
// GC password has been entered
$gc_uniqueid = $req_sql -> create_uniqueid();
$new_gc_password = $user -> encrypt_gc_password($new_password, $gc_uniqueid);
$upd_pwd = $user -> update_gc_password($gc_uniqueid, $new_gc_password);
if ($upd_pwd === 0)
{
// Update error
$error -> add_error($page['Gc_pwd_update_error']);
}
$Original_pwd = $user -> decrypt_gc_password($gc_uniqueid, $new_gc_password);
echo 'pass : '.$Original_pwd;
}
Code : Tout sélectionner
function encrypt_gc_password($uniqueid, $new_password)
{
$iv;
$encrypted;
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
//$iv = 'pksuchqkjfdsfdfs';
$encrypted = openssl_encrypt($new_password, 'aes-256-cbc', $uniqueid, 0, $iv);
echo 'original : '. openssl_decrypt($encrypted, 'aes-256-cbc', $uniqueid, 0, $iv) . '<br />';
return base64_encode($encrypted . '::' . $iv);
}
function decrypt_gc_password($uniqueid, $garble)
{
echo base64_decode($garble) . '<br />';
list($encrypted_data, $iv) = explode('::', base64_decode($garble), 2);
echo $encrypted_data . '<br />';
echo $iv . '<br />';
return openssl_decrypt($encrypted_data, 'aes-256-cbc', $uniqueid, 0, $iv);
}
Pouvez-vous m'aider ? N'hésitez pas si besoin d'informations complémentaires pour me décoincer.original : 308d3f59ab125d2e8a6d9735c3b122939038439c
0EC5Lrh2jFYGWuohld5BMv+5gcxrYM1BY3kdPPHAhqMseC5/uRBv8ubdeZT2Vq0v::�W���0.��s̳I��
0EC5Lrh2jFYGWuohld5BMv+5gcxrYM1BY3kdPPHAhqMseC5/uRBv8ubdeZT2Vq0v
�W���0.��s̳I��
pass :
Merci