Я использую функцию mcrypt для шифрования блока текста с использованием TripleDES.90% времени это работает как надо, и я могу прекрасно расшифровать.Остальные 10%, хотя я просто не могу его расшифровать - как будто у меня неправильный ключ или данные искажены.
Функция выглядит следующим образом:
function enc($text, $key, $iv) {
$text_num = str_split($text, 8);
$text_num = 8 - strlen($text_num[count($text_num)-1]);
for ($i=0; $i < $text_num; $i++) {
$text = $text . chr($text_num);
}
$cipher = mcrypt_module_open(MCRYPT_TRIPLEDES, '', 'cbc', '');
mcrypt_generic_init($cipher, $key, $iv);
$decrypted = mcrypt_generic($cipher, $text);
mcrypt_generic_deinit($cipher);
return base64_encode($decrypted);
}
Они нажимают &IV - правильные длины (24/8 соответственно) и никогда не меняются.Как я уже сказал, он запускает точный один и тот же код на всем, но только 10% терпит неудачу таким образом.
Есть ли что-то, что я мог передать в $text
, что вызывает это?Разве это не нравится определенные наборы символов?Или это может произойти из-за нехватки памяти / какого-либо другого состояния сервера?
Любая помощь, фиксирующая это, будет принята с благодарностью.Спасибо!