Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: PHP Warning: mcrypt_decrypt()
 
 автор: tAleks   (08.02.2010 в 18:20)   письмо автору
 
 

шифрую данные логина и пароля для автовхода пользователя в куках с помощю фукнции mcrypt_decrypt().
На локальной машине все работает и ошибок никаких не выдает, даже если одну или несколько или все куки стереть. Но на хостинге, периодически пишет в лог, вот такую ошибку:
PHP Warning: mcrypt_decrypt() [<a href='function.mcrypt-decrypt'>function.mcrypt-decrypt</a>]: The IV parameter must be as long as the blocksize in /www/start.php on line 34

Не могу понять откуда она берется. Подскажите кто знает.

  Ответить  
 
 автор: Sergeich   (08.02.2010 в 22:58)   письмо автору
 
   для: tAleks   (08.02.2010 в 18:20)
 

Очень похоже на этот https://bugs.launchpad.net/ubuntu/+source/ldap-account-manager/+bug/121381 баг. Что-то подобное встречалось и для 4-й версии РНР. Решения мне не известны. К сожалению. Когда-то встречал такую штуку тоже, только баг был, на сколько я помню, безобидным - код свое дело делал, лишь сообщение об ошибке появлялось. С переходом на новую версию операционки все прошло.

  Ответить  
 
 автор: Trianon   (09.02.2010 в 00:16)   письмо автору
 
   для: tAleks   (08.02.2010 в 18:20)
 

а как Вы задаете Init Vector?

  Ответить  
 
 автор: tAleks   (09.02.2010 в 14:50)   письмо автору
 
   для: Trianon   (09.02.2010 в 00:16)
 

Так:
$alg = MCRYPT_CAST_256; $mode = MCRYPT_MODE_CBC;
$iv = mcrypt_create_iv(mcrypt_get_iv_size($alg, $mode), MCRYPT_RAND);


Потом его кодирую:

$iv = base64_encode($iv);


и в куку.

  Ответить  
 
 автор: Trianon   (09.02.2010 в 16:09)   письмо автору
 
   для: tAleks   (09.02.2010 в 14:50)
 

а на дешифрующей стороне?

  Ответить  
 
 автор: tAleks   (09.02.2010 в 20:00)   письмо автору
 
   для: Trianon   (09.02.2010 в 16:09)
 


$iv = base64_decode($_COOKIE['iv']);
$alg = MCRYPT_CAST_256; $mode = MCRYPT_MODE_CBC;
$decrypt_email = trim(mcrypt_decrypt($alg, SECRET_CODE, base64_decode($_COOKIE['email']), $mode, $iv));
$decrypt_pass = trim(mcrypt_decrypt($alg, SECRET_CODE, base64_decode($_COOKIE['pass']), $mode, $iv));



И эта ошибка, вылетает, именно в этих двух строках, которые выделены жирным. Причем вылетает не всегда. Отследить закономерность не могу.

  Ответить  
 
 автор: Trianon   (10.02.2010 в 00:36)   письмо автору
 
   для: tAleks   (09.02.2010 в 20:00)
 

Так а кукис-то всегда жив?
Значение в нем всегда валидно?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования