Cryptage / decryptage basique en php utilisant le principe du carre de vigenère

Contenu du snippet

Bon, c'est hyper basique comme cryptage.

J'avais pondu ca lors de mes cours de philo, en 98, au debut c'etait en Pascal. Je l'ai converti en Php l'an passe pour m'amuser un peu. (c'est fou ce qu'on s'ennuie en Oklahoma...!)

Le principe est simple: on dispose d'un texte que l'on veut crypter. On y ajoute une clef. Le principe est d'ajouter la valeur ascii de la premiere lettre du texte original a la valuer ascii de la premiere lettre de la clef, et ainsi de suite jusqu'a la fin du texte.

Pour le decodage, on fait l'oppose.

Le code est a ameliorer...

Source / Exemple :


=--= Fonction "Crypter" =--=

//Début de ma fonction crypter 
//Entrée: message à crypter, mot de passe. (les deux sont de type chaine) 
//Je considère les chaines comme étant des tableaux de caractères 
//Sortie: message encrypté. (chaine) 
//Ecrit par Tadpole, Décembre 1998, cours de Philo. 
//Traduit du Pascal/Delphi
   function crypter($mes,$password) {
	 $res=' ';
	 $j=0;
	 $tmp=0;
//initialisations des variables. 
//J'ai pour habitude de toujours déclarer les types de mes variables...
	 $lgmot = strlen($mes);
//on récup la longueur du message 
//puis on boucle en analysant chaque caractère tour à tour jusqu'au bout du message.
	for ($i = 0; $i < $lgmot; $i++) {
		$tmp = ord($mes[$i]) + ord($password[$j]);
//La ligne précédente est le coeur du programme: 
//on ajoute la valeur ascii du caractère en position i 
//à la valeur ascii du caractère en position j. Simple mais efficace. 
//si le resultat est supérieur a 255, pas de panique, on enlève 256 et on retombe sur nos pieds ;-)
	if ($tmp > 255) {
			$tmp = $tmp - 256;
			}
		$res[$i]=chr($tmp);
	if ($j == (strlen($password)-1)) {
			$j= 0;
			}	else {
			$j=(($j % (strlen($password))) + 1);
//Ahh... le modulo... J'adore :-)
			}
		}
        $res = base64_encode($res);
//base64 est conseille pour le traitement des chaines longues, cf. 'Programming PHP', Ed. O'Reilly, Rasmus Lerdorf & Kevin Tatroe, page 385.
	return $res;
//On retourne le messsage crypté.
	}

=--= Fonction "Décrypter" =--=

//Début de ma fonction décrypter 
//Entrée: message à décrypter, mot de passe. (les deux sont de type chaine) 
//Je considère les chaines comme étant des tableaux de caractères 
//Sortie: message décrypté. (chaine) 
//Ecrit par Tadpole, Décembre 1998, cours de Philo. 
//Traduit du Pascal/Delphi
   function decrypter($mes,$password) {
	 $res=' ';
	 $j=0;
	 $tmp=0;
//Initialisation des variables 
         $mes = base64_decode($mes);
//on decode le message encode en base64.
//Ensuite, on récup la longueur du message 
//Puis on boucle tant que nous n'avons pas parcouru 
//chaque lettre contenue dans le message.
	 $lgmot = strlen($mes);
	for ($i = 0; $i < $lgmot; $i++) {
		$tmp = ord($mes[$i]) - ord($password[$j]);
//ici on prends les 2 valeurs ascii des caratères du message 
//en position i et du mot de passe en position j et on les soustrait. 
//Si le résultat est négatif, pas de panique, on ajoute 256 et hop, 
//nous nous y retrouvons.
	if ($tmp < 0) {
			$tmp = 256 + $tmp;
			}
			$res[$i]=chr($tmp);
		
	if ($j == (strlen($password)-1)) {
			$j= 0;
			}	else {
			$j=(($j % (strlen($password))) + 1);
//Modulo pour parcourrir le mot de passe...
			}
		}
	return $res;
	}

Conclusion :


Voila, j'attends vos critiques, car je sais que ce source est loin d'etre parfait :)

A voir également

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.