htmlcss.fr Des tutos ou tutoriels Wordpress, html, php ou javascript.

PHP : Encodage & Décodage

P

J’ai parfois besoin de stocker des informations en base de données mais de temps en temps il est préférable que cela soit encodé. J’utilise donc les deux petite fonctions suivantes. Evidemment si les données que vous voulez encoder sont vraiment sensibles, je vous conseil fortement de rechercher une autre solution plus robuste…

Concrètement il faut d’abord définir un clé qui nous servira pour l’encodage et le décodage; on choisira un truc bien compliqué. Ne la perdez pas!
J’ai l’habitude de définir une constante pour cette clé. Voici un exemple mais utilisez en une autre…

define('ENCODE_KEY', '~nu!j_EBK,:XE2e{kQ!bhuQ9j]%SlF]z3L^Qy.Q[Gn?NCe<BBy>^LHv~1P]nq~&;');

Ensuite voici les fonctions:

  ///////////////////////
  // Encodage Decodage basic
  // la clé de codage ne doit pas être perdu !
  ///////////////////////
  function encode($string,$key = ENCODE_KEY) {
    $key = sha1($key);
    $strLen = strlen($string);
    $keyLen = strlen($key);
    $j = 0;
    $hash = '';
    for ($i = 0; $i < $strLen; $i++) {
      $ordStr = ord(substr($string,$i,1));
      if ($j == $keyLen) { $j = 0; }
      $ordKey = ord(substr($key,$j,1));
      $j++;
      $hash .= strrev(base_convert(dechex($ordStr + $ordKey),16,36));
    }
    return $hash;
  }

  function decode($string,$key = ENCODE_KEY) {
    $key = sha1($key);
    $strLen = strlen($string);
    $keyLen = strlen($key);
    $j = 0;
    $hash = '';
    for ($i = 0; $i < $strLen; $i+=2) {
      $ordStr = hexdec(base_convert(strrev(substr($string,$i,2)),36,16));
      if ($j == $keyLen) { $j = 0; }
      $ordKey = ord(substr($key,$j,1));
      $j++;
      $hash .= chr($ordStr - $ordKey);
    }
    return $hash;
  }
}

htmlcss.fr Des tutos ou tutoriels Wordpress, html, php ou javascript.

François Riant

Je m’appelle François Riant. Je travail dans les métiers du web depuis 2006. Mon expérience m’a amené à changer plusieurs fois de technologie.

Aujourd’hui je cherche à partager mon expérience et j’y trouve du de plaisir. Je travail actuellement chez W2P Digital.
Je ne prends donc pas de mission en freelance.

Si vous avez une remarque ou une question; vous pouvez me joindre sur francois.riant@gmail.com