par
jojolapine » 25 janv. 2007, 12:04
Bonjour,
tout d'abord merci d'avoir cherché un peu

Mais visiblement ça ne fonctionne pas, voici le code que 'jai actuellement (j'ai changer les noms de variable :p )
function vigenere_crypt($texteOriginal,$cle){
//liste des caractères autorisé
$caracteres=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','_','.','@','-',' ','\'','"');
//longueur du tableau des caractères autorisé
$longueurTabcaracteres=count($caracteres);
//initialisation de la variable destinée à contenir le texte codé...
$texteCode='';
//initialisation de $j, compteur de la clé
$j=0;
//$longueur du texte original
$longeurTexteOriginal=strlen($texteOriginal);
//pour chaque lettre du texte original on effectue les calculs ci-dessous
for($i=0;$i<$longeurTexteOriginal;$i++){
//récupération des clés du tableau correspondant à la lettre courante du texte original et de la clé
$key_texteOriginal=array_keys($caracteres,$texteOriginal{$i});
$key_cle=array_keys($caracteres,$cle{$j});
//Calcul de la correspondance
$texteCode.= $caracteres[($key_texteOriginal[0]+$key_cle[0])%$longueurTabcaracteres];
// si la clé est plus courte que le texte, on revient au début de la clé.
$j=(($j<(strlen($cle)-1)) ? $j+1 : 0);
}
return $texteCode;
}
function vigenere_decrypt($texteCode,$cle){
//liste des caractères autorisé
$caracteres=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','_','.','@','-',' ','\'','"');
//longueur du tableau des caractères autorisé
$longueurTabcaracteres=count($caracteres);
//initialisation de la variable destinée à contenir le texte codé...
$texteDecode='';
//initialisation de $j, compteur de la clé
$j=0;
//$longueur du texte original
$longeurTexteCode=strlen($texteCode);
//pour chaque lettre du texte original on effectue les calculs ci-dessous
for($i=0;$i<$longeurTexteCode;$i++){
//récupération des clés du tableau correspondant à la lettre courante du texte original et de la clé
$key_texteCode=array_keys($caracteres,$texteCode{$i});
$key_cle=array_keys($caracteres,$cle{$j});
//Calcul de la correspondance
$texteDecode.= $caracteres[$key_cle[0]%$longueurTabcaracteres+$key_texteCode[0]];
// si la clé est plus courte que le texte, on revient au début de la clé.
$j=(($j<(strlen($cle)-1)) ? $j+1 : 0);
}
return $texteDecode;
}
$code=vigenere_crypt('Je m\'appelle louis','roi');
$decode=vigenere_decrypt($code,'roi');
echo "texte codé: ".$code."<br />texte décodé: ".$decode;
Donc la première fonctione m'a toujours l'air correcte, elle renvoi le même nombre de caractères en tout cas... mais la seconde... ne va pas du tout je pense qu'il y a des "sorties de tableau"...
je vois mal comment je vais résoudre mon problème...
Bonjour,
tout d'abord merci d'avoir cherché un peu ;-)
Mais visiblement ça ne fonctionne pas, voici le code que 'jai actuellement (j'ai changer les noms de variable :p )[php]function vigenere_crypt($texteOriginal,$cle){
//liste des caractères autorisé
$caracteres=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','_','.','@','-',' ','\'','"');
//longueur du tableau des caractères autorisé
$longueurTabcaracteres=count($caracteres);
//initialisation de la variable destinée à contenir le texte codé...
$texteCode='';
//initialisation de $j, compteur de la clé
$j=0;
//$longueur du texte original
$longeurTexteOriginal=strlen($texteOriginal);
//pour chaque lettre du texte original on effectue les calculs ci-dessous
for($i=0;$i<$longeurTexteOriginal;$i++){
//récupération des clés du tableau correspondant à la lettre courante du texte original et de la clé
$key_texteOriginal=array_keys($caracteres,$texteOriginal{$i});
$key_cle=array_keys($caracteres,$cle{$j});
//Calcul de la correspondance
$texteCode.= $caracteres[($key_texteOriginal[0]+$key_cle[0])%$longueurTabcaracteres];
// si la clé est plus courte que le texte, on revient au début de la clé.
$j=(($j<(strlen($cle)-1)) ? $j+1 : 0);
}
return $texteCode;
}
function vigenere_decrypt($texteCode,$cle){
//liste des caractères autorisé
$caracteres=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','_','.','@','-',' ','\'','"');
//longueur du tableau des caractères autorisé
$longueurTabcaracteres=count($caracteres);
//initialisation de la variable destinée à contenir le texte codé...
$texteDecode='';
//initialisation de $j, compteur de la clé
$j=0;
//$longueur du texte original
$longeurTexteCode=strlen($texteCode);
//pour chaque lettre du texte original on effectue les calculs ci-dessous
for($i=0;$i<$longeurTexteCode;$i++){
//récupération des clés du tableau correspondant à la lettre courante du texte original et de la clé
$key_texteCode=array_keys($caracteres,$texteCode{$i});
$key_cle=array_keys($caracteres,$cle{$j});
//Calcul de la correspondance
$texteDecode.= $caracteres[$key_cle[0]%$longueurTabcaracteres+$key_texteCode[0]];
// si la clé est plus courte que le texte, on revient au début de la clé.
$j=(($j<(strlen($cle)-1)) ? $j+1 : 0);
}
return $texteDecode;
}
$code=vigenere_crypt('Je m\'appelle louis','roi');
$decode=vigenere_decrypt($code,'roi');
echo "texte codé: ".$code."<br />texte décodé: ".$decode;[/php]
Donc la première fonctione m'a toujours l'air correcte, elle renvoi le même nombre de caractères en tout cas... mais la seconde... ne va pas du tout je pense qu'il y a des "sorties de tableau"...
je vois mal comment je vais résoudre mon problème...