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

Soyez le premier à donner votre avis sur cette source.

Vue 6 934 fois - Téléchargée 369 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
Messages postés
576
Date d'inscription
mercredi 5 janvier 2005
Statut
Membre
Dernière intervention
12 mai 2009

c'est sûr.
Messages postés
6146
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
10
bah, il n'y a que les imbéciles qui ne changent pas d'avis. Mais le passage au java permet de mettre au clair ces soucis de mémoire sous flash. Et j'ai fait des tests depuis.

Peg'
Messages postés
576
Date d'inscription
mercredi 5 janvier 2005
Statut
Membre
Dernière intervention
12 mai 2009

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.
Messages postés
6146
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
10
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'
Messages postés
72
Date d'inscription
lundi 10 décembre 2007
Statut
Membre
Dernière intervention
11 octobre 2011

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);
Afficher les 7 commentaires

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.