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 !

CÉSAR PLUS (CRYPTAGE, DÉCRYPTAGE AVEC CLÉ ALÉATOIRE)


Information sur la source

Description

Cliquez pour voir la capture en taille normale
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

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

}

?>

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de defkrie le 04/09/2004 09:32:03

- 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

signaler à un administrateur
Commentaire de defkrie le 04/09/2004 09:34:38

Comme toujours j'attends vos commentaires...

signaler à un administrateur
Commentaire de coucou747 le 05/09/2004 20:43:11

bah tu multiplie uniquement par deux au maximum cinq le temps de cassege par rapport à ton ancienne source...

signaler à un administrateur
Commentaire de defkrie le 11/09/2004 09:14:56

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.

signaler à un administrateur
Commentaire de coucou747 le 11/09/2004 09:58: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

signaler à un administrateur
Commentaire de defkrie le 11/09/2004 10:17:57

pas tout ta fait d'accord

Je reconnais que la difficultés de ce crypatge est faible et cassé depuis tres longtemps.

Cependant jai rajouter des astuces pour l'améliorer et cela suffit pour cacher les mot de pass des membres ou envoyer des messages
  
- Si ma chaine crypté est "azerty" et la clé 04f104f1 cela ne suffit pas à retrouver le vrai message car sa dépends de $test dans la fonction qui peut etre propore à chacun

- Si je mamuse a lancé "azerty" et des clés au hasard 04f104f0
04f104f1
04f104f2
jusqu'à trouver quelque chose qui est cohérent (cela inclu de vérifier manuellment que ct cohérent)
jobtiendriat
04f104f0 -+> atzery
04f104f1 -+> yzeart
04f104f2 -+> zertay
et il faut que je me tape 4294967295 cela pour esperer trouver un message cohérent et si seulement jai le meme $test (sinon ce retaper avec un autre $test)
Techniquement cest possible, mais il faut se lever tres tot.

Jai fait cette source car beaucoup utilisé md5() pour codés le mot de pass de leur membre mais ne connaissé pas le mot de pass non crypté( en réalité certain comme moi meme marquons le mot de pass dans la base et verifions que le md5 de la base et le meme que le md5 tapé mais cest dangereux si on entre dans la base)

Avec cette source on code le mot de pass on peut par exemple sauver dans la base le mot de base crypter le la clé.
envoyer la clé par mail pour vérifier linscription, et si un jour le membre demande de retrouver son mt de pass cest possible.

signaler à un administrateur
Commentaire de oimbart le 20/09/2004 15:48:50

SOS!!

Bon ton système de cryptage est "bidon"

1 - Tu cryptes, ok ça marche.
2 - Tu as une chaine cryptée "sécurisée" NON.
3 - tu prends ta chaine cryptée tu la décode avec elle même (comme cléf de décryptage) et hop décodage à 90% de réussite!

exemple:
le text : AZERTYUIOP
donne une clef : 2ff491fc
et un text crypté : POIUYTRAEZ

tu prends le text crypté : POIUYTRAEZ
comme clef de decryptage : POIUYTRAEZ
donne comme texte : ZEARTYUIOP

Un caractere sur dix de mal placé... donc est-ce valable...

NON

signaler à un administrateur
Commentaire de defkrie le 22/09/2004 13:55:08

Normal regarde avant de critiquer :
le text : AZERTYUIOP
donne une clef : 2ff491fc
et un text crypté : POIUYTRAEZ

tu prends le text crypté : POIUYTRAEZ
comme clef de decryptage :2ff491fc
donne comme texte : AZERTYUIOP

(Il se peut que selon les caracteres speciaux dans $test provoque des problemes à l'affichage : normalemnt non)
Mais ici la clé de décryptage et uniquement celle qu'on te donne au moment du cryptage

signaler à un administrateur
Commentaire de defkrie le 22/09/2004 13:59:19

Cest par ceux que sur la démo qui tourne sur le site je n'affiche pas la clé au moment du cryptage(ct un oublie au moment du packtage en zip je changerai dimanche).

Il est évident que la clé differe du texte crypté.
Je trouve le 1 /10 honteux car tu nas pas lu les fichiers les commentaires et les explications

signaler à un administrateur
Commentaire de defkrie le 22/09/2004 14:01:53

essai sur le site avec cersar plus tu met POIUYTRAE décryptage et la clé 2ff491fc et tu obtient AZERTYUIOP!!!!!!!!!!!!!!!!!!!!!!!!!!!!

signaler à un administrateur
Commentaire de azerty2100 le 27/09/2004 13:41:43

oimbart ta rien compris au script!!!!!!!!!!!!!!!!

signaler à un administrateur
Commentaire de XSimpson le 07/10/2004 17:54:29

Malgrè ce que dises les autres personnes, je pense que ce script fonctionne bien et que je ne vois pas pourquoi un petit site perso qui ne cache aucun grand secret devrait avoir une sécurité du type XXI eme siècle indécryptable en mettant tout les ordinateurs du monde en réseau pour trouver une clé ...
Franchement ton script marche très bien et je m'arrêtrai à celui là pour faire mon site.

Je te remercie, et mettre 1/20 à un script même si il est dépassé c'est vraiment être bête, parce qu'un script aussi complexe ne devrait pas être sous-noté !!

signaler à un administrateur
Commentaire de coucou747 le 07/10/2004 18:06:13

c'est sur qu'il y a un grand travail sur ce script, mais c'est pas sécurisé, faut bien l'admettre...

Il y a un effort par rapport à césar, et par rapport à enigma, mais il n'en reste pas moins insécurisé...

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode



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,733 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é.