César plus (cryptage, décryptage avec clé aléatoire)

Soyez le premier à donner votre avis sur cette source.

Vue 26 866 fois - Téléchargée 957 fois

Description

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); } } ?>

Codes Sources

A voir également

Ajouter un commentaire Commentaires
defkrie Messages postés 435 Date d'inscription vendredi 20 septembre 2002 Statut Membre Dernière intervention 20 novembre 2004
4 sept. 2004 à 09:32
- Avec le zip, vous avez un formulaire comme sur la capture.

- 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
defkrie Messages postés 435 Date d'inscription vendredi 20 septembre 2002 Statut Membre Dernière intervention 20 novembre 2004
4 sept. 2004 à 09:34
Comme toujours j'attends vos commentaires...
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
5 sept. 2004 à 20:43
bah tu multiplie uniquement par deux au maximum cinq le temps de cassege par rapport à ton ancienne source...
defkrie Messages postés 435 Date d'inscription vendredi 20 septembre 2002 Statut Membre Dernière intervention 20 novembre 2004
11 sept. 2004 à 09:14
Je ne pense pas mon chere :

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.
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
11 sept. 2004 à 09:58
c'ets pas vraiment par force brutte quye l'on casse ça...

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.