Fonction mcrypt bug - Comment avoir un cryptage PHP réversible et sur?

Résolu
cs_zzzzzz Messages postés 408 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 18 décembre 2012 - 6 oct. 2011 à 20:06
cs_zzzzzz Messages postés 408 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 18 décembre 2012 - 7 oct. 2011 à 21:52
Bonjour,

J'ai trouvé 2 fonctions pour chiffrer du texte sur php.net (utilisant mcrypt) :

function Crypter($str, $key)
{
# Add PKCS7 padding.
$block = mcrypt_get_block_size('des', 'ecb');
if (($pad = $block - (strlen($str) % $block)) < $block) {
$str .= str_repeat(chr($pad), $pad);
}

return mcrypt_encrypt(MCRYPT_DES, $key, $str, MCRYPT_MODE_ECB);
}

function Decrypt($str, $key)
{
$str = mcrypt_decrypt(MCRYPT_DES, $key, $str, MCRYPT_MODE_ECB);

# Strip padding out.
$block = mcrypt_get_block_size('des', 'ecb');
$pad ord($str[($len strlen($str)) - 1]);
if ($pad && $pad < $block && preg_match(
'/' . chr($pad) . '{' . $pad . '}$/', $str
)
) {
return substr($str, 0, strlen($str) - $pad);
}
return $str;
}

Le problème est que le decryptage des mots de pass ne marche pas.


J'ai :

const Cle = "\xc8\xd9\xb9\x06\xd9\xe8\xc9\xd2";

et dans un fichier test.php :

$crypt = $check->Crypter('test@gmail.com',$check->Cle);
$rep = $check->Decrypt('¾Ñ¡• jª²¥aêâZ¤E',$check->Cle);

Crypt me donne ¾Ñ¡• jª²¥aêâZ¤E pour test@gmail.com,cela semble marcher. Decrypt me sort : &ˆÁ«³ÜX]¿šˆ1²Ä1$TgQgö‰!Œ4ZÜü®¬ au lieu de test@gmail.com...

Je ne pige rien à ces fonctions. J'aimerai simplement un cryptage réversible et sur.

Merci d'avance pour votre aide

3 réponses

cs_47 Messages postés 197 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 20 février 2013 1
7 oct. 2011 à 13:50
Bonjour,

tente de faire plutôt un $rep = $check->Decrypt($crypt, $check->Cle). Ca fonctionne.

Dans ton exemple, tu passes en 1er argument une chaine de caractères (issue d'un copier/coller du navigateur) seul hic, il y a des caractères non ASCII dedans qui ne s'affichent pas forcement.

Si ca ne fonctionne pas, en utilisant $crypt, regarde si la valeur de $check->Cle.

bonne journée

p.s: avant que Cod57 ou syndrael ne passent par là et disent pour les mots de passe, on n'utilise pas d'algo réversible ^^
inwebo Messages postés 380 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 23 octobre 2014
7 oct. 2011 à 16:57
j'aime le p.s.

Je sors !
________________________________________
( $toBe || !$toBe ) = $this->Question();
cs_zzzzzz Messages postés 408 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 18 décembre 2012
7 oct. 2011 à 21:52
MErci pour ton aide! Effectivement c'était un problème de char non ASCII.
Rejoignez-nous