Probleme avec l'encryption encryption AES ...
Posté : 12 nov. 2015, 08:58
Bonjour
Voilà, j'ai un probleme dont cela fait des heures que j'essaye en vain de résoudre....
j'ai un petit programme qui crypte "hello world" en "9F3B0437A62248E9A1D914201532C9A9" avec la clé "1111222233334444".
Il s'agit de l'algorythme de cryptage AES 128 bit, et le mode ECB.
Apres des heures de recherches, j'ai reussi à trouver un script PHP qui donne le meme resultat :
Cependant j'ai besoin d'un script qui me permet de faire l'inverse, c'est à dire, à partir du mot crypté "9F3B0437A62248E9A1D914201532C9A9" et de la clé "1111222233334444" me permettent d'obtenir "hello world"...
Apparement ce script provient du script suivant :
j'ai donc essayé ce script ( et une rimbanbelle d'autres...) :
Or, lorsque j'essaye de decrypter "9F3B0437A62248E9A1D914201532C9A9", je n'obtiens jamais "hello world"... mais "D•Ã*€BË>vóÜBäô‚vZŠáNJ}fšæÚ+ñ"......
Quelqu'un serait-il d'ou viens mon erreur?
Merci pour votre aide
Voilà, j'ai un probleme dont cela fait des heures que j'essaye en vain de résoudre....
j'ai un petit programme qui crypte "hello world" en "9F3B0437A62248E9A1D914201532C9A9" avec la clé "1111222233334444".
Il s'agit de l'algorythme de cryptage AES 128 bit, et le mode ECB.
Apres des heures de recherches, j'ai reussi à trouver un script PHP qui donne le meme resultat :
<?php
$password = "1111222233334444"; //MUST be 16 characters
$text = "hello world";
function aes_encrypt($val,$ky) {
$mode=MCRYPT_MODE_ECB;
$enc=MCRYPT_RIJNDAEL_128;
$val=str_pad($val, (16*(floor(strlen($val) / 16)+(strlen($val) % 16==0?2:1))), chr(16-(strlen($val) % 16)));
return mcrypt_encrypt($enc, $ky, $val, $mode, mcrypt_create_iv( mcrypt_get_iv_size($enc, $mode), MCRYPT_DEV_URANDOM));
}
echo strtoupper(bin2hex(aes_encrypt($text,$password)));
?>La personne qui l'a posté (il y a des années..) a ajouté : "Basically what has to happen, is the returned encryption must be padded out, then turned to uppercase hex. Then it'll work like a charm in AES Fusion..."Cependant j'ai besoin d'un script qui me permet de faire l'inverse, c'est à dire, à partir du mot crypté "9F3B0437A62248E9A1D914201532C9A9" et de la clé "1111222233334444" me permettent d'obtenir "hello world"...
Apparement ce script provient du script suivant :
function aes_decrypt($val,$ky)
{
$key="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
for($a=0;$a<strlen($ky);$a++)
$key[$a%16]=chr(ord($key[$a%16]) ^ ord($ky[$a]));
$mode = MCRYPT_MODE_ECB;
$enc = MCRYPT_RIJNDAEL_128;
$dec = @mcrypt_decrypt($enc, $key, $val, $mode, @mcrypt_create_iv( @mcrypt_get_iv_size($enc, $mode), MCRYPT_RAND) );
return rtrim($dec,(( ord(substr($dec,strlen($dec)-1,1))>=0 and ord(substr($dec, strlen($dec)-1,1))<=16)? chr(ord( substr($dec,strlen($dec)-1,1))):null));
}
function aes_encrypt($val,$ky)
{
$key="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
for($a=0;$a<strlen($ky);$a++)
$key[$a%16]=chr(ord($key[$a%16]) ^ ord($ky[$a]));
$mode=MCRYPT_MODE_ECB;
$enc=MCRYPT_RIJNDAEL_128;
$val=str_pad($val, (16*(floor(strlen($val) / 16)+(strlen($val) % 16==0?2:1))), chr(16-(strlen($val) % 16)));
return mcrypt_encrypt($enc, $key, $val, $mode, mcrypt_create_iv( mcrypt_get_iv_size($enc, $mode), MCRYPT_RAND));
} avec $val pour le texte, et $ky pour la clé...j'ai donc essayé ce script ( et une rimbanbelle d'autres...) :
<?php
$ky ="1111222233334444";
$val ="9F3B0437A62248E9A1D914201532C9A9";
function mysql_aes_decrypt($val,$ky)
{
$key="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
for($a=0;$a<strlen($ky);$a++)
$key[$a%16]=chr(ord($key[$a%16]) ^ ord($ky[$a]));
$mode = MCRYPT_MODE_ECB;
$enc = MCRYPT_RIJNDAEL_128;
$dec = @mcrypt_decrypt($enc, $key, $val, $mode, @mcrypt_create_iv( @mcrypt_get_iv_size($enc, $mode), MCRYPT_DEV_URANDOM ) );
return rtrim($dec,(( ord(substr($dec,strlen($dec)-1,1))>=0 and ord(substr($dec, strlen($dec)-1,1))<=16)? chr(ord( substr($dec,strlen($dec)-1,1))):null));
}
function mysql_aes_encrypt($val,$ky)
{
$key="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
for($a=0;$a<strlen($ky);$a++)
$key[$a%16]=chr(ord($key[$a%16]) ^ ord($ky[$a]));
$mode=MCRYPT_MODE_ECB;
$enc=MCRYPT_RIJNDAEL_128;
$val=str_pad($val, (16*(floor(strlen($val) / 16)+(strlen($val) % 16==0?2:1))), chr(16-(strlen($val) % 16)));
return mcrypt_encrypt($enc, $key, $val, $mode, mcrypt_create_iv( mcrypt_get_iv_size($enc, $mode), MCRYPT_DEV_URANDOM));
}
echo mysql_aes_decrypt($val,$ky);
?>
Or, lorsque j'essaye de decrypter "9F3B0437A62248E9A1D914201532C9A9", je n'obtiens jamais "hello world"... mais "D•Ã*€BË>vóÜBäô‚vZŠáNJ}fšæÚ+ñ"......
Quelqu'un serait-il d'ou viens mon erreur?
Merci pour votre aide