Eléphanteau du PHP |
11 Messages
08 févr. 2007, 09:01
un exemple de fonction de cryptage et décryptage
<?php
//-----------------------------------------------------------------
// $bEncrypt === TRUE => cryptage
// $bEncrypt === FALSE => décryptage
function EnCrypt($Text,$Cle, $bEnCrypt = FALSE, $RandMin = 0, $RandMax = 64000)
{ $bCrypt = ($bEnCrypt === TRUE) ? FALSE : TRUE;
while (TRUE)
{ if ($bCrypt === TRUE)
{ $KeyForCrypt = md5($Cle);
$Text = ($bEnCrypt === FALSE)? base64_decode($Text) : $Text;
}
else
{ srand((double)microtime()*1000000);
$KeyForCrypt = md5(rand($RandMin,$RandMax));
}
for ($StrOut = "", $Cpt=0, $Pos=0; $Pos < strlen($Text); $Pos++, $Cpt++)
{ $Cpt = ($Cpt == strlen($KeyForCrypt))? 0 : $Cpt;
$StrOut .= ($bCrypt === FALSE)? substr($KeyForCrypt,$Cpt,1): "" ;
$StrOut .= substr($Text,$Pos,1) ^ substr($KeyForCrypt,$Cpt,1);
}
if ($bCrypt === TRUE)
break;
$Text = $StrOut;
$bCrypt = TRUE;
}
if ($bEnCrypt === TRUE)
return base64_encode($StrOut);
for ($String = "", $Cpt = 0, $Pos = 1; $Pos <= strlen($StrOut); $Pos+=2, $Cpt+=2)
$String.= (substr($StrOut,$Pos,1) ^ substr($StrOut,$Cpt,1) );
return $String;
}
//-----------------------------------------------------------------
//Exemple de l'appel à la fonction EnCrypt:
$Cle = "Forum_des développeurs_PHP";
$Text = "[email protected]";
$Crypt = EnCrypt($Text,$Cle,TRUE,0,1000);
$Decrypt = EnCrypt($Crypt,$Cle);
echo "\nTexte original [".strlen($Text)."]: $Text <Br>";
echo "\nCle [".strlen($Cle)."]: $Cle <Br>";
echo "\nTexte crypté[".strlen($Crypt)."] : $Crypt <Br>";
echo "\nTexte décrypté[".strlen($Decrypt)."] : $Decrypt <Br>";
$Crypt1 = EnCrypt($Text,$Cle,TRUE);
$Decrypt1 = EnCrypt($Crypt1,$Cle);
echo "\nTexte crypté[".strlen($Crypt1)."] : $Crypt1 <Br>";
echo "\nTexte décrypté[".strlen($Decrypt1)."] : $Decrypt1 <Br>";
?>