J'utilise la classe suivante pour chiffrer et déchiffrer une chaîne. Après avoir créé deux chaînes identiques, je crypte l'une des chaînes, puis je la décrypte. Cependant, la chaîne déchiffrée n'est plus égale à son jumeau (même si elle a l'air identique sous forme de texte après la conversion). En outre, après avoir pris la chaîne encrypt-decrypted et son jumeau et les avoir convertis en hexadécimal bin2hex, je découvre qu'ils ont l'air similaires seulement que la chaîne qui a été chiffrée avant a un nombre additionnel de zéro à la fin. Est-ce que quelqu'un peut signaler ce que j'ai mal fait? Merci d'avance.Les chaînes ne sont plus égales après le chiffrement et le décryptage
travailler avec leurclasse proCrypt {
public function __set($name, $value)
{
switch($name)
{
case 'key':
case 'ivs':
case 'iv':
$this->$name = $value;
break;
default:
throw new Exception("$name cannot be set");
}
}
/**
*
* Gettor - This is called when an non existant variable is called
*
* @access public
* @param string $name
*
*/
public function __get($name)
{
switch($name)
{
case 'key':
return 'abcd';
case 'ivs':
return mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
case 'iv':
return mcrypt_create_iv($this->ivs);
default:
throw new Exception("$name cannot be called");
}
}
/**
*
* Encrypt a string
*
* @access public
* @param string $text
* @return string The encrypted string
*
*/
public function encrypt($text)
{
// add end of text delimiter
$data = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $this->key, $text, MCRYPT_MODE_ECB, $this->iv);
return bin2hex($data);
}
/**
*
* Decrypt a string
*
* @access public
* @param string $text
* @return string The decrypted string
*
*/
public function decrypt($text)
{
$text = pack("H*" , $text);
return mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $this->key, $text, MCRYPT_MODE_ECB, $this->iv);
}
} // fin de la classe
Pouvez-vous nous montrer le var_dump() de chacun? (le non-traité et celui qui a été crypté et déchiffré?) – spanky
Salut, thegreasyitalian Je crée deux chaîne: $ text1 = 'argent'; $ text2 = 'argent'; après avoir chiffré et décrypté $ text2 et convertir les deux en hexadécimal (bin2hex) j'ai obtenu la sortie suivante: text1: 6d6f6e6579 text2: 6d6f6e65790000000000000000000000 – James
Utilisez var_dump ($ text1) au lieu d'echo pour les deux chaînes, et voyez ce que cela produit. – spanky