Ошибка в php склепе

Я использую такой FN для шифрования \ дешифрования

<?
//Encrypt Function
function mc_encrypt($encrypt, $mc_key) {
     $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND);
    $passcrypt = trim(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $mc_key, trim($encrypt), MCRYPT_MODE_ECB, $iv));
    $encode = base64_encode($passcrypt);
    return $encode;
}

// Decrypt Function
function mc_decrypt($decrypt, $mc_key) {
    $decoded = base64_decode($decrypt);
    $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND);
    $decrypted = trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $mc_key, trim($decoded), MCRYPT_MODE_ECB, $iv));
    return $decrypted;
}
?>

если я вызываю mc_encrypt('test', 'pass'), все дешифрует нормально, но если я вызываю mc_encrypt('test=value', 'pass'), я не могу расшифровать. Зачем? и что мне делать?

1 ответ

Решение

Вы должны сказать нам, что происходит, то есть, какой код вы называете, что вы ожидаете, и что выходит. Мы не можем догадаться, что означает "я не могу расшифровать".

Я могу дать вам одно предложение уже:

$passcrypt = trim(mcrypt_encrypt(
  MCRYPT_RIJNDAEL_256, $mc_key, trim($encrypt), MCRYPT_MODE_ECB, $iv));

Не связывайтесь с входными данными [trim($encrypt)]. Если вызывающий абонент хочет обрезать строку, предоставьте ему это сделать. В противном случае, если у вашей входной строки есть пробел, который нужно обрезать, вы в конечном итоге зашифруете строку, отличную от той, которая была передана. Это может закончиться только слезами.

Другие вопросы по тегам