Algorithme de césar sur la table ascii

Contenu du snippet

Bonjour,

Alors voila, simple et basic, histoire d'apporté un regarde différent (Tout du moins par rapport aux codes du genre qui se compliquent la tête selon moi, dans phpcs) pour l'utilisation de l'algo de César sur la table Acsii.

Source / Exemple :


<?php 
#--------------------------------------------------------------------------------------------
#	Function cesar(string $word, int $offset, int $mode)
#
#	@$word    -> La chaine à encrypter ou decrypter;
#	@$offset  -> Le Nombre d'offset de decalage 
#       @$mode    -> 1 pour encrypter (Incrémenter), tout autre pour decripter (Decrementer)
#       return    -> La chaine $word altéré grace à la methode de césar d'apres les tables ascii
#
#   By Nementon, ---http://uwht.u7n.org---
#---------------------------------------------------------------------------------------------

function cesar($word, $offset, $mode) {
	$offset  = intval($offset);
	$mode    = intval($mode);
	$wLenght = strlen($word);
	$return  = '';
	
	if ($mode == 1 ) {
		for ($i = 0; $i < $wLenght; $i++) {
			// On recuperer le code ascii
			$tmpAscii = ord($word[$i]);
			// On ajoute à la chaine finale, la corespondance du code ascii recuperé incrementé de l'offset passé en parametre
			$return  .= chr($tmpAscii+$offset);
		}
	}
	else {
		for ($i = 0; $i < $wLenght; $i++) {
			$tmpAscii = ord($word[$i]);
			$return  .= chr($tmpAscii-$offset);
		}
	}
	return $return;
}
#--------------------------------------------------------------------------------------------
#	function cesar2(string $word, int $offset, int $mode)
#
#	@$word    -> La chaine à encrypter ou decrypter;
#	@$offset  -> Le Nombre d'offset de decalage 
#   @$mode    -> 1 pour encrypter (Incrémenter), tout autre pour decripter (Decrementer)
#   @return   -> La chaine $word altéré grace à la methode de césar d'apres les tables ascii
#
#---------------------------------------------------------------------------------------------
// Exemple de fonction césar un plus tortueuse
function cesar2($word, $offset, $mode) {
	$offset  = intval($offset);
	$mode    = intval($mode);
	$wLenght = strlen($word);
	$return  = '';
	
	if ($mode == 1 ) {
		for ($i = 0; $i < $wLenght; $i++) {
			// On recuperer le code ascii
			$tmpAscii = ord($word[$i]);
			$return  .= chr($tmpAscii+$offset+(($i*$wLenght)-$i));
		}
	}
	else {
		for ($i = 0; $i < $wLenght; $i++) {
			$tmpAscii = ord($word[$i]);
			$return  .= chr($tmpAscii-$offset-(($i*$wLenght)-$i));
		}
	}
	return $return;
}

	//Exemple :
	echo '<b>Cesar : </b><br />', cesar("abc", 666, 1), // Encrypte;
	'<br />', cesar("ûüý", 666, 2), '<br /><br />'; // Decrypte

       //Exemple  :
	$wEncrypte = cesar2("abcdefghijklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ0123456789", 666, 1);// Encrypte;
	echo '<b>Cesar 2 : <b/><br />', $wEncrypte, '<br />',  cesar2($wEncrypte, 666, 2); // Decrypte
?>

Conclusion :


Bon, un peu useless pour surement 97% d'entre vous, mais ce code source la m'aurait bien aidé à mes début ; )

Tous commentaires sont les bienvenus.

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.