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; } }