César plus (cryptage, décryptage avec clé aléatoire)

Description

Cesar Plus

Cesar Plus permet de crypter et décrypter un texte avec la méthode de Jules César mais amélioré.

Ainsi pour chaque texte codé vous obtenez un clé de 8 charactères permettant de décrypter votre texte.

Voir la capture ou sur l'exemple disponibl en ligne à http://ndwc.fwhost.net

Source / Exemple :


<?
/*
Cesar_Plus($chaine,$choix,$pos,$pass,$mode);

Var:
$chaine : chaine à (dé)crypter
$choix  : nombre de décalage de lettres 
$pos    : sens de décallage : 
	  "-1" vers la gauche
	  "1"  vers la droite 
$pass   : clé pour le décryptage
$mode   : mode de fonctionnement :  
	  "-1" cryptage
	  "1"  décryptage 

Limit :
$chaine : limit à 60000 caractères
$choix  : limit à 200
$pass   : 8 caractères héxa

Conseil :
mélanger la chaine $test

  • /
function Cesar_Plus($chaine,$choix,$pos,$pass,$mode){ global $chaine,$pass; $test="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ !#%&')+,-./:>=@]^_`{}~²|éà赀£š"; $uncode=0; //uncode pass if($mode==1){ if(strlen($pass)-8==0){ $k1=hexdec($pass[0]); if($k1>=2 and $k1<=14){ $k2=$k1/2; if(($k1%2)!=0){$k2+=.5;} $nb=hexdec(substr($pass,1,4)); $pos=hexdec($pass[5]); $choix=hexdec(substr($pass,6,2)); if(($pos-$k1)==1 or ($pos-$k1+2)==1){ $pos-=$k1; $choix=-255+$choix+$k1+$k2; $choix*=-1; $nb-=65355; $nb/=-$k2; $pos=-$pos; } else{$uncode=1;} } else{$uncode=1;} } else{$uncode=1;} } //cesar if($uncode==0 or $mode==-1){ for($i=0;$i<strlen($chaine);$i++){ if(strpos($test, $chaine[$i]) !== false){ $j=strpos($test,substr($chaine,$i,1)); if($pos=="-1"){ $j -= $choix; while($j<0){$j +=strlen($test);} } else{ $j += $choix; while($j+1>strlen($test)){$j -=strlen($test);} } $chaine[$i]=$test[$j]; } } } //codage if($mode==-1){ $nb=rand(0,strlen($chaine)-1); for($i=0;$i<$nb;$i++){ $test=$chaine[$i]; $chaine[$i]=$chaine[$i+1]; $chaine[$i+1]=$test; } $chaine=strrev($chaine); } //uncodage if($mode==1){ if($uncode==1){$nb=0;} $chaine=strrev($chaine); for($i=$nb;$i>0;$i--){ $test=$chaine[$i]; $chaine[$i]=$chaine[$i-1]; $chaine[$i-1]=$test; } } //code pass if($mode==-1){ $k1=rand(2,14); $k2=$k1/2; if(($k1%2)!=0){$k2+=.5;} $pos+=$k1; $choix-=255-$k1-$k2; $choix*=-1; $nb=65355-($nb*$k2); $pass=dechex($k1).dechex($nb).dechex($pos).dechex($choix); } } ?>

Codes Sources

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.