As3-asciitextencryptor - cryptage / décryptage de texte ascii (cs4)

Soyez le premier à donner votre avis sur cette source.

Vue 7 362 fois - Téléchargée 381 fois

Description

Introduction à l'encodage de texte au format ASCII avec code commenté et fonctions flexible. Tout est dans la source que je vous laisse découvrir.

Source / Exemple :


masterKey.text = "VotreMasterKey"; /// Texte de la masterKey.
infosTexte.text = "Bienvenue,\nASCII Text Encryptor By JALF.";  /// Texte Infos d'intro.
Texte.text = "Legi, Patres colendissimi, in Arabum monumentis, interrogatum Abdalam 1  Sarracenum, quid in hac quasi mundana scaena admirandum maxime spectaretur, nihil spectari homine admirabilius respondisse. ";
 /// ^Texte Pour Essai.^
 
//////////////////////////////////////
//    		 CRYPTAGE  			  //
//////////////////////////////////////
function crypte(txt:String, clef:String) {	 			/// Fontion cryptage avec en arguments le "txt" à coder et la "clef" (voir ligne 89).
	clearInterval(attenteInterval);							/// Arrêt de l'interval de 100ms.
	TexteCode.text = "";												/// Effacement de la zone texte de destination.
	ClefsCodage = new Array();									/// Declaration du tableau pour récupéré les variable ASCII de la "masterKey".
	for (i=0; i<clef.length; i++) {									/// Pour chaque caractére de la "clef" a partir du premier (0), et jusque qu'a ça derniére lette :
		var lettreClef:String = clef.substr(i, 1);			/// Je déclare une variable "lettreClef"qui recupére le dit caractére,
		var codeLettreASCII:Number = lettreClef.charCodeAt(0);  /// je déclare une variable  qui récupére le code ASCII du caractére
		ClefsCodage.push(codeLettreASCII); 			/// et enfin je place le code caractére ASCII dans mon tableau.
	}
	j = 0;																			/// Mise à Zero de "j".
	for (i=0; i<=txt.length; i++) {								/// Pour chaque caractére du "txt" a partir du premier (0), et jusque qu'a ça derniére lettre :
		if ( i == txt.length){												/// Si "i" a ateint la derniére lettre,
			infosTexte.text = "Codage terminé.";		/// j'indique que l'encodage est terminé.
		} else {																	/// Sinon,
			var lettre:String  = txt.substr(i, 1);				/// je récupére le caractére dans une variable,
			var codeASCII :String = lettre.charCodeAt(0);	/// je récupére le code ASCII du dit caractére dans une autre variable,
			var codeCrypter:Number = Number(codeASCII)+Number(ClefsCodage[j]);	/// puis j'additionne le code  ASCII du caractére "txt" et du caractére "clef" en cours.
			j++;																		/// j'implemente "j" pour atteindre à la prochaine boucle le prochain caractére "clef".
			if (j == (ClefsCodage.length-1)) 					{/// si "j" dépasse le nombre de caractére de la "clef".
				j = 0;																/// remise à zero de "j".
			}																			/// Pour avoir un code caractére ASCII qui a toujours 3 chiffre je vérifie sont format :
			if (codeCrypter<10) {									/// si le code ASCII est inférieur a la 10ène ,
				codeASCIIEncode = "00"+codeCrypter;/// je lui met deux "0" devant.
			} else if (codeCrypter<100) {						/// Si le code ASCII est inférieur à la 100ène ,
				codeASCIIEncode = "0"+codeCrypter; /// je lui met un seul "0" devant.
			} else {																/// Sinon,
				codeASCIIEncode = codeCrypter;			/// alors.
			}
			TexteCode.appendText(codeASCIIEncode); /// Puis pour finir j'implémente au fur et à mesure, chaque code ASCII de 3 caractére dans le texte de destination.
		}
	}
};

//////////////////////////////////////
// 			 DECRYPTAGE  		//
//////////////////////////////////////
function decrypte(txt:String, clef:String) {			/// Fontion décryptage avec en arguments le "txt" à décoder et la "clef" (voir ligne 105).
	clearInterval(attenteInterval);							/// Arrêt de l'interval de 100ms.
	Texte.text  = "";														/// Effacement de la zone texte de destination.
	ClefsCodage = new Array();									/// Declaration du tableau pour récupéré les variable ASCII de la "masterKey".
	for (i=0; i<clef.length; i++) 									{/// Pour chaque caractére de la "clef" a partir du premier (0), et jusque qu'a ça derniére lette :
		var lettreClef:String = clef.substr(i, 1);			/// Je déclare une variable "lettreClef"qui recupére le dit caractére,
		var codeLettreASCII:Number = lettreClef.charCodeAt(0); /// je déclare une variable  qui récupére le code ASCII du caractére
		ClefsCodage.push(codeLettreASCII);			/// et enfin je place le code caractére ASCII dans mon tableau.
	}
	j = 0;																			/// Mise à Zero de "j".
	for (i=0; i<=(txt.length); i += 3) {							/// Pour chaque code ASCII de 3 chiffres a partir du premier (0), et jusqu'au qu'au dernier :
		if ( i == (txt.length)){											/// Si "i" a ateint la derniére lettre,
			infosTexte.text = "Décodage terminé.";	/// j'indique que le decodage est terminé.
		} else {																	/// Sinon,
			var codeCrypter:String = txt.substr(i, 3);	/// je récupére le code ASCII de 3 chiffre dans une variable,
			var codeLettreDecrypter:Number = Number(codeCrypter)-Number(ClefsCodage[j]); /// je soustrait le code caractére ASCII et le code ASCII du caractére "clef" en cours pour récupéré le code réel,
			var lettreDecrypter:String = String.fromCharCode(codeLettreDecrypter);/// je récupére le véritable caractére par son code ASCII,
			Texte.appendText(lettreDecrypter);		/// j'implémente le caractére récupéré dans la zone texte de destination,
			j++;																		/// j'implemente "j" pour atteindre à la prochaine boucle le prochain caractére "clef".
			if (j == (ClefsCodage .length-1)) {				/// si "j" dépasse le nombre de caractére de la "clef".
				j = 0;																/// remise à zero de "j".
			}
		}
	}
};

//////////////////////////////////////
//    ACTIONS BT "Coder" 	//
//////////////////////////////////////
bt_coder.addEventListener(MouseEvent.CLICK, codeText);  									/// Ecouteur du bonton  "Coder".
function codeText (e:MouseEvent):void {																		 /// Fonction du bonton  "Coder".
	if ( masterKey.text == ""){																								 /// Si la "MasterKey" est vide,
		infosTexte.text = 'Veuillez entrer une "MasterKey".' ;											/// alors.
	} else if ( Texte.text == ""){ 																								/// Si le "Texte :" à coder est vide,
		infosTexte.text = 'Veuillez entrer un texte à encoder dans "Texte : ".';			/// alors.
	} else { 																																	/// Sinon,
		infosTexte.text = "Codage en cours,\nVeuillez patienter...";								/// alors,
		attenteInterval = setInterval(crypte, 100, Texte.text, masterKey.text);		/// et lancement de la fonction de cryptage "crypte" après 100ms,
																																					/// avec comme arguments le  "txt" et la "clef".
	}
};

//////////////////////////////////////
//    ACTIONS BT "Coder" 	//
//////////////////////////////////////
bt_decoder.addEventListener(MouseEvent.CLICK, decodeText); 											 /// Ecouteur du bonton  "Décoder".
function decodeText (e:MouseEvent):void { 																					/// Fonction du bonton  "Décoder".
	if ( masterKey.text == ""){																												/// Si la "MasterKey" est vide,
		infosTexte.text = 'Veuillez entrer une "MasterKey".';															/// alors.
	} else if ( TexteCode.text == ""){																										/// Si le "Texte :" à coder est vide,
		infosTexte.text = 'Veuillez entrer un texte à décoder dans "Texte Codé : ".';				/// alors.
	} else { 																																					/// Sinon,
		infosTexte.text = "Décodage en cours,\nVeuillez patienter...";
		attenteInterval = setInterval(decrypte, 100, TexteCode.text, masterKey.text);			/// et lancement de la fonction de décryptage "decrypte" après 100ms,
																																									/// avec comme arguments le  "txt" et la "clef".
	}
};

////////////////////////////////////////////
//  ACTIONS DES BTs "Effacer" //
////////////////////////////////////////////
bt_efftexte.addEventListener(MouseEvent.CLICK, effTexte);						 /// Ecouteur du bonton  "Texte :"/ "Effacer".
function effTexte (e:MouseEvent):void {																 /// Fonction  du bonton  "Texte :"/ "Effacer".
	Texte.text = "";
};

bt_efftextecode.addEventListener(MouseEvent.CLICK, effTexteCode); 	/// Ecouteur  du bonton  "Texte Codé :"/ "Effacer".
function effTexteCode (e:MouseEvent):void { 													/// Fonction  du bonton  "Texte Codé :"/ "Effacer".
	TexteCode.text = "";
};

Conclusion :


Enjoy !

Codes Sources

A voir également

Ajouter un commentaire Commentaires
LapinouFouSAT13 Messages postés 2 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 27 mai 2010
27 mai 2010 à 21:58
PetiteNonne Messages postés 39 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 20 décembre 2011
30 mai 2010 à 14:03
Super bien commentée cette source et je la trouve bien conçue. Je ne suis pas assez douée en flash pour donnée un avis plus technique. J'aime cette façon de faire, c'est propre et bien ordonné. Je donne une bonne note.
blunt1337 Messages postés 72 Date d'inscription lundi 10 décembre 2007 Statut Membre Dernière intervention 11 octobre 2011
3 juin 2010 à 20:30
Slt,
quelque amélioration s'impose :
exemple les Numbers remplaçable par int, ou encore déclarer des variables en dehors des boucles, sans oublier :
var lettreClef:String clef.substr(i, 1); // clef.charAt(i) aussi ...
var codeLettreASCII:Number = lettreClef.charCodeAt(0);

remplaçable par :

var codeLettreASCII:uint = clef.charCodeAt(i);
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
4 juin 2010 à 07:55
Juste une petite précision pour Blunt1337 : les uint n'apportent rien dans flash, il est donc préférable de rester sur des int et de ne les utiliser que lorsqu'ils sont réellement indispensables (dans un paramétrage, par exemple).

Sachant qu'ils sont aussi codés sur 32 bits et que leurs traitement est plus lent que les int directement.

Peg'
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
4 juin 2010 à 23:32
Ah! Ah! tu viens de contredire ton message du 14/08/2008 sur space survivor! J'avais raison :)
Pegase31:
c'est surtout une question de mémoire ... un uint est moins lourd qu'un int, qui l'est encore moins qu'un Number ... pour ce qui est de la rapidité, ce sont tout les 3 des chiffres, donc quesiton "rapidité", je doute qu'il y ait des différences.

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.