Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
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
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 :
$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
Florian
Hors ligne
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 :
<?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