PHP MyCrypt编码/解码不工作


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。

你,正确地,明确指定了一个模式,但你选择了最坏的可能模式。不要使用欧洲央行,它会泄露信息。请使用CBC或CTR模式。

你没有指定padding。要显式地指定它,使用PKCS7和Rijndael要好得多。

如果这些都没有帮助,那么逐个字节检查你的密钥,以确保加密和解密时它是相同的。