César

Soyez le premier à donner votre avis sur cette source.

Vue 13 150 fois - Téléchargée 4 035 fois

Description

Le chiffrement de César

Ce code de chiffrement est un des plus anciens, dans la mesure où Jules César l'aurait utilisé. Le principe de codage repose sur l'ajout d'une valeur constante à l'ensemble des caractères du message, ou plus exactement à leur code ASCII(pour une version "informatique" de ce codage).

Il s'agit donc simplement de décaler l'ensemble des valeurs des caractères du message d'un certain nombre de positions, c'est-à-dire en quelque sorte de substituer chaque lettre par une autre.

Ce code est fourni avec un formulaire (voir le screen) pour vous montrez son fonctionnement. Vous pouvez l'utilisé en ligne à l'adresse de mon site
http://ndwc.fwhost.net/

Source / Exemple :


<?
/*
Cesar($chaine,$choix,$pos,$mode);
$chaine : chaine à convertir
$choix : nombre de décalage de lettres 
$pos : sens de décallage "-1" vers la gauche
			 "1"  vers la droite 
$mode : "0" cryptage
	"1" decryptage

  • /
function Cesar($chaine,$choix,$pos,$mode){ global $chaine; $test="abcdefghijklmnopqrstuvwxyz"; if($mode!="0"){$pos=-$pos;} for($i=0;$i<strlen($chaine);$i++){ if(strpos($test, $chaine[$i]) !== false){ $j=strpos($test,substr($chaine,$i,1)); if($pos=="-1"){ $j -= $choix; while($j<0){$j +=strlen($test);} } else{ $j += $choix; while($j+1>strlen($test)){$j -=strlen($test);} } $chaine[$i]=$test[$j]; } } } ?>

Conclusion :


voila on se rend compte qu'on n'a un texte non crypté qui devient crypté celon des parametres donc une clé. hélas ce procédé a été cassé depuis fors longtemps en verifiant l'utilisation des lettres des pays.
Meme si la technique de subsitution est faible pour le cryptage comparé à dautres je mettari bientot en ligne une version amélioré du code de césar
@+

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
435
Date d'inscription
vendredi 20 septembre 2002
Statut
Membre
Dernière intervention
20 novembre 2004

Excat, je l'avour ce sont de mauvaises habitudes prises en C, la chaine globale doit etre suprimée et renvoyée en paramètre. De plus et là c'est flagrant pour les boucle il fut mieux stocker le résultat d'un strlen. Par soucis d'écriture je les imbriqué mais ct une erreur car à la longue on perd tu temps.
Pour l'utiliser il suffit de faire un require Cesar/function_Cesar.php et d'utiliser la fonction "aze","1","1","0" me donnera dans chaine la valeur crypté de aze ici un décalage vers la droite : "baf".
Pour le décoder il faut refaire la fonction avec "baf","1","1","1" et on retrouve "aze".
Jutilise des 0 et de 1 au lieu de booléen true et false, cela se discute et vient du faite qu'on ne fait pas de distinction de type de var en php. les autres fichiers servent d'exemple et surtout à le faire fonctionner comme dans le screen.
++
Messages postés
449
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
5 mars 2009

J'ai oublie egalement un truc, evite de mettre un parametre passe a la fonction en global, sa peut poser des problemes si jamais on souhaite implementer ta fonction sur un projet, on ne sait pas a quoi peut servir la var plus tard donc dans le doute, mieux vaut la retourner, c'est plus sage ;-)

++
Messages postés
449
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
5 mars 2009

Hello

Je cherchais justement une fonction comme celle la afin de mieux comprendre l'implementation possible en php. Malheureusement, je n'ai pas reussi a la faire fonctionner .. (suis-je un boulet ? surement ...).

Au niveau du code par contre, il serait interessant que tu places la valeur de strlen($test) directement dans une variable et ensuite tu l'utilises pour tes boucles, tes verfis ect... parce que la, tu perts un temps dingue a faire toujours le meme calcul a cahque tour de boucles ... tu peut arriver a tester la meme valeur des dizaines de fois rien que pour une petite chaine, alors si on veut s'amuser a crypter un texte complet, bonjour le temps perdu !
Autre idee : il peut etre interessant de composer son propre charset avec ta var $test, mais si tu ne l'as pas prevues, autant partir dans l'idee que l'alphabet fait 26 lettres (et je doute que sa change d'ici peu ^^), donc autant economiser un strlen(), a moins que, comme je l'ai dit, tu veuilles introduire la possibilite de composer son propre charset.

En tout cas merci quand meme, a defaut d'avoir fonctionner chez moi, j'aurais au moins saisie l'idee ;-)

@++
Messages postés
2
Date d'inscription
lundi 27 septembre 2004
Statut
Membre
Dernière intervention
27 septembre 2004

idee original
Messages postés
435
Date d'inscription
vendredi 20 septembre 2002
Statut
Membre
Dernière intervention
20 novembre 2004

comme promit voici la version amélioré
http://www.phpcs.com/code.aspx?ID=25931
Afficher les 15 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.