Vigenere
Résolu
jun_1393
Messages postés
28
Date d'inscription
Statut
Membre
Dernière intervention
-
jun_1393 Messages postés 28 Date d'inscription Statut Membre Dernière intervention -
jun_1393 Messages postés 28 Date d'inscription Statut Membre Dernière intervention -
bonjours
je travail sur un code Vigenère suivant (sa validation)
cependant je n'arrive pas à résoudre le problème. merci de votre aide.
je travail sur un code Vigenère suivant (sa validation)
cependant je n'arrive pas à résoudre le problème. merci de votre aide.
<?php require_once('Crypto.php'); $crypto = new Crypto(); // initialise les variables $key = ""; $code = ""; $error = ""; $valid = true; $file_cle = file("/Clef/cle.txt", FILE_IGNORE_NEW_LINES); $file_mondic = file("/Clef/mondic.txt", FILE_IGNORE_NEW_LINES); // si le formulaire a été envoyé if ($_SERVER['REQUEST_METHOD'] == "POST") { // set les variables $key = $_POST['key']; $code = $_POST['code']; foreach ($file_cle as $key){ // regarder si le clé a été mis if (empty($_POST['key'])) { $error = "Veuillez entrer une clé!"; $valid = false; } // regarder si la clé a été envoyé else if (empty($_POST['code'])) { $error = "Veuillez entrer du texte à décoder"; $valid = false; } // regarder si la clé est en alphanumeric else if (isset($_POST['key'])) { if (!ctype_alpha($_POST['key'])) { $error = "la clé ne doit que contenir des lettres"; $valid = false; } // regarder si la clé est dans le dictionnaire *utiliser le fichier mondic.txt } else if ($key!==$file_mondic) { $error = "la clé ne se trouve pas dans le dictionnaire"; $valid =false; } //regarder si la clé est dans le fichier cle.txt *utiliser le fichier cle.txt* else if ($key!==$file_cle){ $valid = false; } } } // si le input est valide if ($valid) { // si le bouton encode a été clicker if (isset($_POST['encrypt'])) { $code = $crypto->encoder($key, $code); $error = "texte encodé!"; } // si le bouton décripter a été clicker if (isset($_POST['decrypt'])) { $code = $crypto->decoder($key, $code); $error = "texte décodé!"; } }
<?php interface ICryptographie { public function encoder($key, $text); public function decoder($key, $text); } class Crypto implements ICryptographie { // fonction pour encoder un texte function encoder($key, $text) { // changer la clé en minuscule $key = strtolower($key); // initialise les variables $code = ""; $ki = 0; $kl = strlen($key); $length = strlen($text); $text .= ' '; // iterate over each line in text for ($i = 0; $i < $length; $i++) { // si la lettre est en alpha, l'encoder if (ctype_alpha($text[$i])) { // Majuscule if (ctype_upper($text[$i])) { $text[$i] = chr(((ord($key[$ki]) - ord("a") + ord($text[$i]) - ord("A")) % 26) + ord("A")); } // minuscule else { $text[$i] = chr(((ord($key[$ki]) - ord("a") + ord($text[$i]) - ord("a")) % 26) + ord("a")); } // mettre à jour l'index de la clé $ki++; if ($ki >= $kl) { $ki = 0; } }else if($text[$i] == ' ' ){ $text .=' '; } } // retourner le code encoder return $text; } // fonction pour décoder le texte function decoder($key, $text) { // changer la clé en minuscule $pswd = strtolower($key); // initialise les variables $code = ""; $ki = 0; $kl = strlen($key); $length = strlen($text); // iterate over each line in text for ($i = 0; $i < $length; $i++) { // si la lettre est en alpha, la décripter if (ctype_alpha($text[$i])) { // majuscule if (ctype_upper($text[$i])) { $x = (ord($text[$i]) - ord("A")) - (ord($key[$ki]) - ord("a")); if ($x < 0) { $x += 26; } $x = $x + ord("A"); $text[$i] = chr($x); } // minuscule else { $x = (ord($text[$i]) - ord("a")) - (ord($key[$ki]) - ord("a")); if ($x < 0) { $x += 26; } $x = $x + ord("a"); $text[$i] = chr($x); } // mettre à jour l'index de la clé $ki++; if ($ki >= $kl) { $ki = 0; } } } // retourner le code décripter return $text; } } ?>
<?php ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>TP2 EA et MJ</title> <link rel="stylesheet" type="text/css" href="TP_EA_MJ_CSS.css"> </head> <body> <br> <br> <form action="encode.php" method="post"> <table cellpadding="5" align="center" cellpadding="2" border="7"> <caption> <hr> <h1>Code vigenère</h1> <hr> </caption> <!-- Mettre la clé--> <tr> <td align="center">Clé: <input type="text" name="key" id="pass" value=""></td> </tr> <!-- Mettre le texte a encode--> <tr> <td align="center">Texte: <input type="textarea" id="box" name="code"></input></td> </tr> <!-- Bouton pour encode--> <tr> <td><input type="submit" name="encrypt" class="button" value="Encode" onclick="validate(1)"/></td> </tr> <!-- Bouton pour decode--> <tr> <td><input type="submit" name="decrypt" class="button" value="Decode" onclick="validate(2)"/></td> </tr> <!-- Endroit pour retourner le message encode--> <tr> <td>Message encode: </td> </tr> <!-- Endroit pour retourner le message decode--> <tr> <td>Message decode: </td> </tr> </table> </form> </body> </html>
2 réponses
Bonjour
Et quel est le souci exactement ?
Message d'erreur ou resultat incorrect? Merci de détailler...
Et quel est le souci exactement ?
Message d'erreur ou resultat incorrect? Merci de détailler...
voici mon code actuel
ps: merci pour l'aide jusque ici jordane45
ps: merci pour l'aide jusque ici jordane45
<?php interface ICryptographie { public function encoder($key, $text); public function decoder($key, $text); public function regexp($chaine); } class Crypto implements ICryptographie { // fonction regexp pour geré les accents et caractére special function regexp($chaine) { $accents = Array("/é/", "/è/", "/ê/","/ë/", "/ç/", "/à/", "/â/","/á/","/ä/","/ã/","/å/", "/î/", "/ï/", "/í/", "/ì/", "/ù/", "/ô/", "/ò/", "/ó/", "/ö/"); $sans = Array("e", "e", "e", "e", "c", "a", "a","a", "a","a", "a", "i", "i", "i", "i", "u", "o", "o", "o", "o"); $chaine = preg_replace($accents, $sans,$chaine); $chaine = preg_replace('#[^A-Za-z0-9]#',' ',$chaine); return $chaine; } // $toto='#£$¤µ*%§!:;,@}=])°^¨_\'|-[({\'#"~&<>² <föù>dré£%}'; // echo teste($toto);//retourne » foudre // fonction pour encoder un texte function encoder($key, $text) { // $text = ""; #longeur de la clé répété $keyLength=strlen($text);//text// ## !array qui repetera la clé !!!!!!!!!!!! $repeatKey=strtolower(substr(str_repeat($key,$keyLength),0,$keyLength)); $text_code = " "; $j=0; $text .= ' '; // au cas ou $text est vide for($i=0;$i<=$keyLength;$i++){ if(ctype_alpha($text[$i])) { if (ctype_upper($text[$i])){ $text_code .= chr(((ord($repeatKey[$j]) -ord("a") + ord($text[$i]) -ord("A")) % 26 ) + ord("A")); } else { $text_code .= chr(((ord($repeatKey[$j]) -ord("a") + ord($text[$i]) -ord("a")) % 26 ) + ord("a")) ; } $j++; // $this->regexp($text_code); } else if($text[$i] == ' ' ){ $text_code .=' '; } } return $this->regexp($text_code); //return $text_code; } function decoder($key, $text) { // change key to lowercase for simplicity $key = strtolower($key); // intialize variables $code = ""; $ki = 0; $kl = strlen($key); $length = strlen($text); $text_decode =" "; // iterate over each line in text for ($i = 0; $i < $length; $i++) { // if the letter is alpha, decrypt it if (ctype_alpha($text[$i])) { // uppercase if (ctype_upper($text[$i])) { $x = (ord($text[$i]) - ord("A")) - (ord($key[$ki]) - ord("a")); if ($x < 0) { $x += 26; } $x = $x + ord("A"); $text[$i] = chr($x); } // lowercase else { $x = (ord($text[$i]) - ord("a")) - (ord($key[$ki]) - ord("a")); if ($x < 0) { $x += 26; } $x = $x + ord("a"); $text[$i] = chr($x); } // update the index of key $ki++; if ($ki >= $kl) { $ki = 0; } } } // return the decrypted text return $text; } } ?>
<?php require_once('Crypto.php'); $crypto = new Crypto(); // initialise les variables $key = ""; $code = ""; $error = ""; $valid = true; $file_cle = file(__DIR__ . "/Clef/cle.txt", FILE_IGNORE_NEW_LINES); $file_mondic = file(__DIR__ . "/Clef/mondic.txt", FILE_IGNORE_NEW_LINES); // si le formulaire a été envoyé if ($_SERVER['REQUEST_METHOD'] == "POST") { // set les variables $key = $_POST['key']; $code = $_POST['code']; foreach ($file_cle as $key){ // regarder si le clé a été mis if (empty($_POST['key'])) { $error = "Veuillez entrer une clé!"; $valid = false; } // regarder si la clé a été envoyé else if (empty($_POST['code'])) { $error = "Veuillez entrer du texte à décoder"; $valid = false; } // regarder si la clé est en alphanumeric else if (isset($_POST['key'])) { if (!ctype_alpha($_POST['key'])) { $error = "la clé ne doit que contenir des lettres"; $valid = false; } // regarder si la clé est dans le dictionnaire *utiliser le fichier mondic.txt } else if ($key!==$file_mondic) { $error = "la clé ne se trouve pas dans le dictionnaire"; $valid =false; } //regarder si la clé est dans le fichier cle.txt *utiliser le fichier cle.txt* else if ($key!==$file_cle){ $valid = false; } } } // si le input est valide if ($valid) { // si le bouton encode a été clicker if (isset($_POST['encrypt'])) { $code = $crypto->encoder($key, $code); //$error = "texte encodé!"; } // si le bouton décripter a été clicker if (isset($_POST['decrypt'])) { $code = $crypto->decoder($key, $code); // $error = "texte décodé!"; } }
file(/Clef/mondic.txt): failed to open stream: No such file or directory in F:\progweb\laragon\www\TP2PHP\Encode.php on line 10
Invalid argument supplied for foreach() in F:\progweb\laragon\www\EXPHP\Encode.php on line 18.
Il faut bien que tes fichiers soient nommés correctement... Attentions aux majuscules/minuscules ( en général... il faut éviter d'utiliser des majuscules d'ailleurs... )