Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CHIFFRE DE VIGENÈRE


Information sur la source

Catégorie :Sécurité & Cryptage Classé sous : vigenère, codage, cryptage, chiffrement Niveau : Débutant Date de création : 29/10/2006 Date de mise à jour : 31/10/2006 13:34:22 Vu : 6 157

Note :
Aucune note

Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

Description

bonjours

je viens de faire un petit script cryptant un text en utilisant le chiffre de Vigenère.
pour ceux qui ne connaitraient pas, le chiffre de Vigenère est un systeme de chiffrement par substitution polyalphabétique, élaboré par Blaise de Vigenère ( reportez-vous a Wikipédia pour plus d'infos )
Il s'agissait a la base d'un simple travail sur les modulo, mais ayant obtenu qlq chose qui marche, je me suis dit que ça interesserait peut etre certains

ce script utilise donc ce principe de chiffrement
Durant le chiffrement, on obtien 3 chaines de caracteres:
- la clé de codage, qui est generée aleatoirement, et à la taille du text a chiffrer
- le tableau des caractères, qui contient les caractères, et qui est melangée aléatoirement
- le text codé


Durant le dechiffrement, il faut imperativement donner les 3 chaines completes et juste ( logique ). on recupere le texte décodé

l'utilisation de clés et tables de caracteres générées aleatoirement complique les choses, et empeche de retenire la clé par coeur, contrairement a la version de Vigenère, ou elles étaient préétablites
 

Source

  • <?
  • //fonction de chiffrement
  • function chiffrage_de_Vigenère($text){
  • //caractères reconnus par le code
  • $caract = 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', 'Â', 'À', 'É', 'È', 'Ê', 'Ë', 'Ç', 'Î', 'Ï', 'Ù', 'Ô', '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', 'à', 'â', 'é', 'è', 'ê', 'ç', 'ï', 'î', 'û', 'ô', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ',', ' ', ';', ':', '?', '.', '!', '\'', '<', '>', '$', '£', '%', 'µ', '*', '+', '-');
  • //on melange les caractères
  • shuffle($caract);
  • //creation d'un tableau avec le text
  • $text_explode = preg_split('//', $text, -1, PREG_SPLIT_NO_EMPTY);
  • //creation de la clé de cryptage
  • $clé = array();
  • $nb_caracteres_clé = count($text_explode);
  • for($i=0; $i<=$nb_caracteres_clé; $i++) $clé[]= $caract[rand()%count($caract)];
  • //chiffrement du texte
  • $code = "";
  • for($i=0; $i<count($text_explode); $i++) $code = $code . $caract[(array_search($text_explode[$i], $caract)+array_search($clé[$i%count($clé)], $caract))%count($caract)];
  • //retour des données sous forme de tableau
  • $chiffrage = array( 'text' => $text, 'clé' => implode($clé), 'code' => $code, 'caract'=> implode($caract));
  • return $chiffrage;
  • }
  • //fonction de déchiffrement
  • function dechiffrage_de_Vigenère($text, $clé, $caract){
  • //creation du tableau de caractères
  • $caract = preg_split('//', $caract, -1, PREG_SPLIT_NO_EMPTY);
  • //creation de la clé
  • $clé = preg_split('//', $clé, -1, PREG_SPLIT_NO_EMPTY);
  • //creation d'un tableau du text
  • $text_explode = preg_split('//', $text, -1, PREG_SPLIT_NO_EMPTY);
  • //dechiffrement du code
  • $code = "";
  • for($i=0; $i<count($text_explode); $i++){
  • $id_caract = (array_search($text_explode[$i], $caract)-array_search($clé[$i%count($clé)], $caract))%count($caract);
  • $code = $code . $caract[(($id_caract < 0)?(count($caract)+$id_caract):$id_caract)];
  • }
  • //retour du text decodé
  • return $code;
  • }
  • //exemple
  • $text = "Test de chiffrement d'un text par le chiffre de Vigenère";
  • $codage = chiffrage_de_Vigenère($text);
  • echo "Chiffrage d'un text : <br /><br /><br />
  • <strong>Text à chiffrer: </strong><br />
  • <textarea cols=\"100\" rows=\"5\">".$codage['text']."</textarea>
  • <br /><br />
  • <strong>Clé de codage: </strong><br />
  • <textarea cols=\"100\" rows=\"5\" readonly=\"readonly\">".$codage['clé']."</textarea><br /><br />
  • <strong>Code:</strong>;<br />
  • <textarea cols=\"100\" rows=\"5\" readonly=\"readonly\">".$codage['code']."</textarea><br /><br />
  • <strong>Tableau des caractères:</strong><br />
  • <textarea cols=\"100\" rows=\"5\" readonly=\"readonly\">".$codage['caract']."</textarea><br />
  • <br /><hr><br />";
  • $decodage = dechiffrage_de_Vigenère($codage['code'], $codage['clé'], $codage['caract']);
  • echo "Déchiffrage d'un text : <br /><br /><br />
  • <strong>Code:</strong>;<br />
  • <textarea cols=\"100\" rows=\"5\">".$codage['code']."</textarea><br /><br />
  • <strong>Clé de codage: </strong><br />
  • <textarea cols=\"100\" rows=\"5\">".$codage['clé']."</textarea><br /><br />
  • <strong>Tableau des caractères:</strong><br />
  • <textarea cols=\"100\" rows=\"5\">".$codage['caract']."</textarea><br /><br />
  • <strong>Texte déchiffrer: </strong><br />
  • <textarea cols=\"100\" rows=\"5\" readonly=\"readonly\">".$decodage."</textarea>";
  • ?>
<?

//fonction de chiffrement 

function chiffrage_de_Vigenère($text){

//caractères reconnus par le code
$caract = 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', 'Â', 'À', 'É', 'È', 'Ê', 'Ë', 'Ç', 'Î', 'Ï', 'Ù', 'Ô', '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', 'à', 'â', 'é', 'è', 'ê', 'ç', 'ï', 'î', 'û', 'ô', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ',', ' ', ';', ':', '?', '.', '!', '\'', '<', '>', '$', '£', '%', 'µ', '*', '+', '-');
//on melange les caractères
shuffle($caract);


//creation d'un tableau avec le text
$text_explode = preg_split('//', $text, -1, PREG_SPLIT_NO_EMPTY);

//creation de la clé de cryptage
$clé = array();
$nb_caracteres_clé = count($text_explode);
for($i=0; $i<=$nb_caracteres_clé; $i++) $clé[]= $caract[rand()%count($caract)];

//chiffrement du texte
$code = "";
for($i=0; $i<count($text_explode); $i++) $code = $code . $caract[(array_search($text_explode[$i], $caract)+array_search($clé[$i%count($clé)], $caract))%count($caract)];


//retour des données sous forme de tableau
$chiffrage = array( 'text' => $text, 'clé' => implode($clé), 'code' => $code, 'caract'=> implode($caract));
return $chiffrage;


}

//fonction de déchiffrement 

function dechiffrage_de_Vigenère($text, $clé, $caract){

//creation du tableau de caractères
$caract = preg_split('//', $caract, -1, PREG_SPLIT_NO_EMPTY);

//creation de la clé
$clé = preg_split('//', $clé, -1, PREG_SPLIT_NO_EMPTY);

//creation d'un tableau du text
$text_explode = preg_split('//', $text, -1, PREG_SPLIT_NO_EMPTY);

//dechiffrement du code
$code = "";
for($i=0; $i<count($text_explode); $i++){
$id_caract =  (array_search($text_explode[$i], $caract)-array_search($clé[$i%count($clé)], $caract))%count($caract);
$code = $code . $caract[(($id_caract < 0)?(count($caract)+$id_caract):$id_caract)];
}

//retour du text decodé
return $code;

}

//exemple 

$text = "Test de chiffrement d'un text par le chiffre de Vigenère";

$codage = chiffrage_de_Vigenère($text);

echo "Chiffrage d'un text : <br /><br /><br />

<strong>Text à chiffrer: </strong><br />
<textarea cols=\"100\" rows=\"5\">".$codage['text']."</textarea>
<br /><br />

<strong>Clé de codage: </strong><br />
<textarea cols=\"100\" rows=\"5\" readonly=\"readonly\">".$codage['clé']."</textarea><br /><br />
<strong>Code:</strong>;<br />
<textarea cols=\"100\" rows=\"5\" readonly=\"readonly\">".$codage['code']."</textarea><br /><br />

<strong>Tableau des caractères:</strong><br />
<textarea cols=\"100\" rows=\"5\" readonly=\"readonly\">".$codage['caract']."</textarea><br />
<br /><hr><br />";

$decodage = dechiffrage_de_Vigenère($codage['code'], $codage['clé'], $codage['caract']);

echo "Déchiffrage d'un text : <br /><br /><br />
<strong>Code:</strong>;<br />
<textarea cols=\"100\" rows=\"5\">".$codage['code']."</textarea><br /><br />
<strong>Clé de codage: </strong><br />
<textarea cols=\"100\" rows=\"5\">".$codage['clé']."</textarea><br /><br />
<strong>Tableau des caractères:</strong><br />
<textarea cols=\"100\" rows=\"5\">".$codage['caract']."</textarea><br /><br />

<strong>Texte déchiffrer: </strong><br />
<textarea cols=\"100\" rows=\"5\" readonly=\"readonly\">".$decodage."</textarea>";

?>

Historique

31 octobre 2006 13:34:22 :
bug d'affichage

Commentaires et avis

Aucun commentaire pour le moment.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Cryptage AES ... [ par LocalStone ] Bonsoir &#224; tous, Je cherche d&#233;sesperement un script PHP qui permeterait de crypter n'importe quel texte avec un codage AES (ou autre, mais un cryptage mot de passe [ par richardd ] Bonjour,Quelle est la meilleure solution pour crypter/d&#233;cryter un mot de passe avec une cl&#233; pour stockage en base de donn&#233;es.Le but &#2 htpasswd [ par neolien ] Bonjour &#224; tous, Je suis d&#233;butant en php et j'essaie de placer une s&#233;curisation sur des r&#233;pettoires avec htacess et htpasswd. Pour codage de caractères [ par skoukni_brahim ] bonjour &#224; tous, et merci d'avance&nbsp; j'essaye de r&#233;cup&#233;rer des donn&#233;es saisies ds un formulaire, en g&#233;n&#233;rant un &#233 AIDE Cryptage [ par MATHIS49 ] Bonjour ! Voila j'ai fais le tour de phpcs et je ne trouve pas de script de cryptage / d&#233;cryptage et qui ont l'air bien s&#233;curis&#233;. Auri Cryptage des sources PHP [ par Will28 ] Bonjour,&nbsp;je voulais savoir si quelqu'un pouvait me renseigner sur le cryptage des sources PHP, et plus sp&#233;cialement sur les produit Zend.En Besoin de conseil(s) en cryptage... [ par nougitch ] Bonjour, J'ai mis en place une fonction d'upload de fichier sur mon site. J'aimerai mettre en place un cryptage pour &#233;viter d'&#233;craser un fi *PHP* Cryptage adresse mail ! [ par masterfree ] Bonjour &#224; tous,Avant, j'avais un site en Html; maintenant, je fais le m&#234;me en PHP.Je crypte mes mails en JS (Html). J'ai vu plusieurs exempl Cryptage, décryptage [ par Zart ] Bonjour, Je parcourais le site &#224; la recherche d'un algo de cryptage/d&#233;cryptage... Et apparemment, il n'y a pas celui que je cherche d'apr&# Probleme codage [ par lycol ] Bonjour &#224; tous!!Voila je d&#233;sirerais savoir qu'est-ce qui ne vas pas dans ce code pour avoir l'erreur la:Warning: extract(): First argument


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,296 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.