Class TripleDesCrypter
La class utilise les API de l'extension mcrypt disponible dans PHP depuis la version 4. Bien que le module ait de multiples usages, la class est configurée pour utiliser automatiquement l'algorytme Triple Des.<?php
/**
* Encoder / Décoder un string avec l'algoritme TripleDES
* @author Fobec 2010
*/
class TripleDesCrypter {
/**
* Encoder un texte
* @param $text
* @param $key
* @return
*/
static public function encode($text, $key) {
$mcopen = @mcrypt_module_open(MCRYPT_TripleDES, "", MCRYPT_MODE_ECB, "");
if ($mcopen == false) {
throw new Exception("TripleDES algorithm not avaible !!!");
}
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($mcopen), MCRYPT_RAND);
$encdata = mcrypt_ecb(MCRYPT_TripleDES, $key, $text, MCRYPT_ENCRYPT, $iv);
mcrypt_module_close($mcopen);
$hextext = bin2hex($encdata);
return $hextext;
}
/**
* Decoder un texte
* @param $text
* @param $key
* @return
*/
static public function decode($text, $key) {
$mcopen = @mcrypt_module_open(MCRYPT_TripleDES, "", MCRYPT_MODE_ECB, "");
if ($mcopen == false) {
throw new Exception("TripleDES algorithm not avaible !!!");
}
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($mcopen), MCRYPT_RAND);
$dectext = trim(mcrypt_ecb(MCRYPT_TripleDES, ($key), TripleDesCrypter::hex2bin($text), MCRYPT_DECRYPT, $iv));
return $dectext;
}
/**
* Convertir un hexa en binaire
* @param string $data
* @return string
*/
static private function hex2bin($data) {
$len = strlen($data);
return pack("H" . $len, $data);
}
}
?>
Cacher et retrouver un string
Lorsque l'on souhaiter cacher un mot de passe ou alors envoyer un message codé par email, il est conseillé de crypter les données au préalable.<?php
/**
* Exemple d'utilisation de la class TripleDesCrypter
*/
try {
$passkey = '45zz89x';
$text = 'Les meilleurs articles sont sur Fobec.com';
$crypt = TripleDesCrypter::encode($text, $passkey);
$decrypt = TripleDesCrypter::decode($crypt, $passkey);
echo 'Texte en clair: ' . $text ."
";
echo 'Texte crypte: ' . $crypt ."
";
echo 'Texte decode: ' . $decrypt ."
";
} catch (exception $e) {
echo $e->__toString();
}
?>
Note: TripleDES est une méthode de chiffrement, donc réversible si l'on possède la bonne clé. L'algorithme MD5 est une fonction de hachage, en théorie le texte en clair ne peut pas être retrouvé.