Chiffre de cesar

Contenu du snippet

Hello all !
Comme j'ai eu besoin recement d'une implementation du chiffre de Cesar en php et que les codes que j'ai trouves sur phpcs etaient des uzines a gaz (desole pour les auteurs, ce n'est pas contre vous), j'ai ecris cette petite fonction qui fait tout comme une grande ;-)
Rien de palpitant ni de tres complique, je mets le source ici juste au cas ou quelqu'un soit un jour dans la meme situation que moi et cherche un truc pas complique et fonctionnel :p

Source / Exemple :


<?php
#########################################################
#				CHIFFRE DE CESAR						#
#														#
#		$Msg : texte a crypter/decrypter				#
#		$Clef : offset a applique						#
#		$Action : TRUE = crypter; FALSE = decrypter		#
#########################################################
function Cesar($Msg, $Clef, $Action)
{
	$Charset = 'abcdefghijklmnopqrstuvwxyz';
	$CharsetLen = strlen($Charset);

	$MsgLen = strlen($Msg);
		
	// Au cas ou la clef ne serait pas valide (qu'elle depasse la longueur du charset ou qu'elle soit inferieur a 0 - ce qui n'est pas super utile :p)
	if ( ($Clef > $CharsetLen) || ($Clef < 0) )
		return FALSE;
		
	// Boucle de traitement
	for ( $i=0; $i<$MsgLen; $i++ )
	{
		// Evalue la position de la lettre dans le charset
		if ( ($Pos = strpos($Charset, $Msg[$i])) !== FALSE )
		{
			if ( $Action )
			{
				if ( ($Result = $Pos + $Clef) > $CharsetLen )
					$Result = $Result - $CharsetLen;
			}	
			else
			{
				if ( ($Result = $Pos - $Clef) < 0 )
					$Result = $CharsetLen - ($Result * (-1)); 
			}		
			$Msg[$i] = $Charset[$Result];
		}			
	}
	return $Msg;
}
?>

Conclusion :


Exemple en pratique :
<?php
$String = 'salut';
echo Cesar($String, 12, TRUE);
?>

Effectuera une substitution de 12 lettres sur le mot 'salut'. Attention par contre aux caracteres non pris en compte dans le charset(espace, caracateres accentues, ect ...) ! Pensez a modifier celui-ci si jamais vous desirez ne pas trie vos entrees.

Au niveau du code, j'ai fait de mon mieux mais je le repetete, rien de palpitant en somme. En ce qui concerne la securite, il est evident que ce type de securite (si on peut appeller sa comme sa tellement c'est faible) est a proscrire imperativement, c'est juste pour l'exemple. N'allait pas me dire que AES, DES RSA & companie sont mieux, je le sais bien ;-)

@++ et bon coding ^^

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.