[英]PHP MyCrypt Encoding/Decoding doesn't work
我有一个小问题:我的解密不会给我我编码的相同字符串,而且我找不到问题...在其他帖子中看过,但是这里没有什么有用的功能:
public static function encryptData($data){
if($key = self::getEncryptionKey()){
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $data, MCRYPT_MODE_ECB,$iv));
} else {
return false;
}
}
public static function decryptData($data)
{
if($key = self::getEncryptionKey()){
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
return mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, base64_decode($data), MCRYPT_MODE_ECB,$iv);
} else {
return false;
}
}
问题出在哪里? 我有点绝望...
要解密,您需要双方的内容完全相同。 键,模式,IV和填充。
查看您的代码,您似乎正在生成用于解密的新IV。 别。 使用与加密相同的IV。
您正确地明确指定了一种模式,但是选择了最差的模式。 不要使用ECB,它会泄漏信息。 请改用CBC或CTR模式。
您不指定填充。 要明确指定它更好,将PKCS7与Rijndael一起使用。
如果以上方法均无济于事,请逐字节检查密钥,以确保加密和解密都相同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.