Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 09-02-2010 09:38:13

toumimi
Nouveau membre
Date d'inscription: 28-01-2010
Messages: 6

Encryption d'une chaine avec Mcrypt

Bonjour à tous !

Me voilà confronté aujourdhui à un problème de cryptage :
J'ai une classe qui possède une fonction encrypt et une fonction decrypt.
Le problème, c'est que j'ai plusieurs caractères indésirables qui apparaissent à la fin de la chaine après décryptage.

Résultat :
Chaine :                string(3) "abc"
Après cryptage :    string(12) "7göý ò3º"
Après décryptage : string(8) "abc�����"

Fichier DataSecure.php

Code:

class Helper_Datasecure extends Zend_Controller_Action_Helper_Abstract
    implements Zend_Filter_Encrypt_Interface
{
    
    private $_sEncryptionKey = 'Mcrypt';
    private $_sVector = 'myvector';
    
    public function encrypt( $sContentToEncrypt )
    {
        $filter = new Zend_Filter_Encrypt( $this->_sEncryptionKey );
        $filter->setVector( $this->_sVector );
        return utf8_encode( $filter->filter( $sContentToEncrypt ) );
    }
    
    public function decrypt( $sContentToDecrypt )
    {
        $filter = new Zend_Filter_Decrypt( $this->_sEncryptionKey );
        $filter->setVector( $this->_sVector );
        return $filter->filter(  utf8_decode($sContentToDecrypt ) );
    }
    
}

Script d'appel :

Code:

$message = 'abc';
$encrypt = $this->_helper->datasecure->encrypt($message);
$decrypt = $this->_helper->datasecure->decrypt($encrypt);
die(var_dump($message,$encrypt, $decrypt));

Merci à vous pour l'aide que vous pourrez l'apporter smile

Florian

Hors ligne

 

#2 09-02-2010 10:19:38

toumimi
Nouveau membre
Date d'inscription: 28-01-2010
Messages: 6

Re: Encryption d'une chaine avec Mcrypt

Bon alors je m'auto-répond..

J'ai trouvé la solution sur le site de php.net

Il suffit d'utiliser le rtrim sur la chaine décryptée pour enlever les caractères superflus.
J'ai également organiser la classe autrement pour changer la clé de cryptage.

Code final de la classe DataSecure :

Code:

<?php

class Helper_Datasecure extends Zend_Controller_Action_Helper_Abstract
    implements Zend_Filter_Encrypt_Interface
{
    
    private $_sVector = 'myvector';
    private $_sKey = 'myencryptionkey';
    
    /**
     * Encrypter un message en utilisant la bibliotheque Mcrypt (non-PHPdoc)
     * @see library/Zend/Filter/Encrypt/Zend_Filter_Encrypt_Interface#encrypt($value)
     */
    public function encrypt( $sContentToEncrypt )
    {
        $filter = new Zend_Filter_Encrypt( array(
            'adapter'    => 'Mcrypt',
            'vector'    => $this->_sVector,
            'key'        => $this->_sKey ) );
        return utf8_encode( $filter->filter( $sContentToEncrypt ) );
    }
    
    /**
     * Decrypter un message en utilisant la bibliotheque Mcrypt (non-PHPdoc)
     * @see library/Zend/Filter/Encrypt/Zend_Filter_Encrypt_Interface#encrypt($value)
     */
    public function decrypt( $sContentToDecrypt )
    {
        $filter = new Zend_Filter_Decrypt( array(
            'adapter'    => 'Mcrypt',
            'vector'    => $this->_sVector,
            'key'        => $this->_sKey ) );
        return rtrim( $filter->filter(  utf8_decode($sContentToDecrypt ) ) );
    }
    
}

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages