par
smashcfr » 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 :
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;
}
-- Dans mon class_user.php :
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);
}
Le résultat des echo :
original : 308d3f59ab125d2e8a6d9735c3b122939038439c
0EC5Lrh2jFYGWuohld5BMv+5gcxrYM1BY3kdPPHAhqMseC5/uRBv8ubdeZT2Vq0v::�W���0.��s̳I��
0EC5Lrh2jFYGWuohld5BMv+5gcxrYM1BY3kdPPHAhqMseC5/uRBv8ubdeZT2Vq0v
�W���0.��s̳I��
pass :
Pouvez-vous m'aider ? N'hésitez pas si besoin d'informations complémentaires pour me décoincer.
Merci

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 :
[code]
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]
-- Dans mon class_user.php :
[code]
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);
}
[/code]
Le résultat des echo :
[quote]
original : 308d3f59ab125d2e8a6d9735c3b122939038439c
0EC5Lrh2jFYGWuohld5BMv+5gcxrYM1BY3kdPPHAhqMseC5/uRBv8ubdeZT2Vq0v::�W���0.��s̳I��
0EC5Lrh2jFYGWuohld5BMv+5gcxrYM1BY3kdPPHAhqMseC5/uRBv8ubdeZT2Vq0v
�W���0.��s̳I��
pass :
[/quote]
Pouvez-vous m'aider ? N'hésitez pas si besoin d'informations complémentaires pour me décoincer.
Merci :)