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
@+
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.
++
++
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 ;-)
@++
http://www.phpcs.com/code.aspx?ID=25931
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.