Не работает кодирование / декодирование PHP MyCrypt - PullRequest
0 голосов
/ 21 ноября 2011

У меня есть небольшая проблема: моя расшифровка не даст мне ту же строку, которую я закодировал, и я не могу найти проблему ... Посмотрел другие посты, но здесь нет ничего полезного: мои функции:

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;
    }

}

в чем проблема?Я немного отчаялся здесь ...

1 Ответ

1 голос
/ 21 ноября 2011

Для расшифровки вам нужно все одинаково с обеих сторон.клавиша, режим, IV и заполнение.

Глядя на ваш код, вы, похоже, генерируете новый IV для расшифровки.Не.Используйте тот же IV, который вы использовали для шифрования.

Вы правильно указали режим, но выбрали худший из возможных режимов.Не используйте ЕЦБ, это утечка информации.Вместо этого используйте режим CBC или CTR.

Вы не указываете отступы.Гораздо лучше указать это явно, используйте PKCS7 с Rijndael.

Если ничего из этого не помогает, то проверьте свой ключ, побайтно, чтобы убедиться, что он одинаков как для шифрования, так и для дешифрования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...