Cesar Plus
Cesar Plus permet de crypter et décrypter un texte avec la méthode de Jules César mais amélioré.
Ainsi pour chaque texte codé vous obtenez un clé de 8 charactères permettant de décrypter votre texte.
Voir la capture ou sur l'exemple disponibl en ligne à
http://ndwc.fwhost.net
Source / Exemple :
<?
/*
Cesar_Plus($chaine,$choix,$pos,$pass,$mode);
Var:
$chaine : chaine à (dé)crypter
$choix : nombre de décalage de lettres
$pos : sens de décallage :
"-1" vers la gauche
"1" vers la droite
$pass : clé pour le décryptage
$mode : mode de fonctionnement :
"-1" cryptage
"1" décryptage
Limit :
$chaine : limit à 60000 caractères
$choix : limit à 200
$pass : 8 caractères héxa
Conseil :
mélanger la chaine $test
function Cesar_Plus($chaine,$choix,$pos,$pass,$mode){
global $chaine,$pass;
$test="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ !#%&')+,-./:>=@]^_`{}~²|éàèµ£";
$uncode=0;
//uncode pass
if($mode==1){
if(strlen($pass)-8==0){
$k1=hexdec($pass[0]);
if($k1>=2 and $k1<=14){
$k2=$k1/2;
if(($k1%2)!=0){$k2+=.5;}
$nb=hexdec(substr($pass,1,4));
$pos=hexdec($pass[5]);
$choix=hexdec(substr($pass,6,2));
if(($pos-$k1)==1 or ($pos-$k1+2)==1){
$pos-=$k1;
$choix=-255+$choix+$k1+$k2;
$choix*=-1;
$nb-=65355;
$nb/=-$k2;
$pos=-$pos;
}
else{$uncode=1;}
}
else{$uncode=1;}
}
else{$uncode=1;}
}
//cesar
if($uncode==0 or $mode==-1){
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];
}
}
}
//codage
if($mode==-1){
$nb=rand(0,strlen($chaine)-1);
for($i=0;$i<$nb;$i++){
$test=$chaine[$i];
$chaine[$i]=$chaine[$i+1];
$chaine[$i+1]=$test;
}
$chaine=strrev($chaine);
}
//uncodage
if($mode==1){
if($uncode==1){$nb=0;}
$chaine=strrev($chaine);
for($i=$nb;$i>0;$i--){
$test=$chaine[$i];
$chaine[$i]=$chaine[$i-1];
$chaine[$i-1]=$test;
}
}
//code pass
if($mode==-1){
$k1=rand(2,14);
$k2=$k1/2;
if(($k1%2)!=0){$k2+=.5;}
$pos+=$k1;
$choix-=255-$k1-$k2;
$choix*=-1;
$nb=65355-($nb*$k2);
$pass=dechex($k1).dechex($nb).dechex($pos).dechex($choix);
}
}
?>
4 sept. 2004 à 09:32
- Quand vous décrypter, même si vous rentrez une mauvaise clé vous aurez un résultat en sortie donc pour ceux qui veulent tester toutes les clés pour trouver la solution peuvent se lever tot.
- Pour une protection optimale je conseille de mélanger la var $test="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ !#%&')+,-./:>=@]^_`{}~²|éàèµ€£š";
rajouter ou modifier les caracteres et vous obtiendrez un codage particulier plus efficace encore.
@+
\->Defkrie
4 sept. 2004 à 09:34
5 sept. 2004 à 20:43
11 sept. 2004 à 09:14
1 - par rapport à lancien la chaine de characteres est plus longue "$test".
2 - En plus de crypter on utilise une clé, si cest une clé invalide elle génère un résultat qd même qui peut etre cohérent.
3 - Il existe 4294967295 clés différentes pour chaque message codés.
4 - $test peut-etre mélangé donc si qd tu décrypte tu n'as pas le meme $test tu obtiendra bien un message mais meme si la clé est bonne il te sortira un message faux.
5 - Ainsi pour chacune des 4294967295 clés tu as a chaque fois une infinité de posibilité Car a la limite un petit malin prend le message codé et la clé décrypte la clé on utilsant une portion de script et lance la fonction. Mais cela ne marche pas si dans la fonction on personnalise $test.
11 sept. 2004 à 09:58
ex: si ta clef est
azertyui et que tu tapes
azertoui alors tu auras un SEUL caractère de mal décrypté pour 7 caractères cassés...
en fait, tu as 256 ^2 possibilitées pour les 2 premiers caractères, a partir de ces deux caractères, tu élémines PLEIN de possibilitées et tu refais 256 ^2 * le reste des possibilitées (c'est a dire pas bcp...) et on refais ça jusqu'a ce que l'on ai ta clee...
Ton code était encore valide il y a 70 ans, puisque les allemands l'utilisaient pendant la seconde guerre mondiale... mais ce système à démontré de grosses faiblesses depuis.
Je ne suis pas un pro en cryptographie, mais je penses que cette méthode ne peut servir qu'à cacher ses mails au petit frère (c'ets vrai que je suis un peu parano...). J'ai donc fais un programmes permettant de crypter en RSA mais en php, je penses que ça pourait être très dur... et innéficace (car si on veut que çe soit rapide, on DOIT faire ça en C... quand on recherche les nombres premiers ou que l'on fait les exposants [...]) Tu donnes un nombre de clefs que tu trouves super grand, mais malheureusement, il reste petit par rapport au noçmbre d'opération que peut faire un ordinateur...
C'ets vrai que j'ai un peu exagéré en disant que cette méthode ne multipliais que par 5 le temps de cassage, mais cette méthode n'en reste pas moins inneficace.
Bonne prog
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.