Publié le 05/10/2010
Auteur fobec
Réseaux sociaux
0 partages
0 tweets
0 plus
1 commentaires

Crypter un string avec l'algorithme TripleDES

Pour des raisons de sécurité, les mots de passe, des informations confidentielles ou des données privées doivent être encodés. La class TripleDesCrypter est un exemple de cryptage d'un texte en utilisant l'algorithme TripleDES.

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é.

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.
avatar caledonien

Publié par caledonien

le 12/09/2011 à 12:08:38

merci c'est parfait

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
php5 - script
Mise a jour
05/10/2010
Visualisation
vu 4525 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 267 articles
|BIO_PSEUDO|
Commentaires récents

Publié par Fred dans tuto

J'suis d'accord avec Do, PHP est deja un moteur de template.
Disons que le moteur de template permet de separer le code de la vue pour les debutants qui ont besoin qu'on leur impose des bornes...

Publié par need help dans java

Merci pour cet exemple.
Est ce possible de récupérer le flux video d'une camera ou bien une appareil photo branché par USB.

Merci d'avance.

Publié par gilles dans logiciel

Bonjour,

j'utilise quotidiennement votre excellent logiciel complet et ergonomique.

Mais depuis quelques jours j'ai un probleme il recherche indefiniment resolution du nom de l'hote.

Publié par slimaneboufnar2011 dans CMS

merci de votre aide <br>

Publié par Franzi dans java

Bonjour,
Le code est simple et compile, après être entré dans public void connect, il n'effectue pas this.session.get.transport et s'arrête. Sous eclipse avec Tomcat, j'ob...