cryptage (adresse email)

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>";
?>