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

Форум PHP

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

 

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

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

тема: Шифрование
 
 автор: tAleks   (05.02.2007 в 15:18)   письмо автору
 
 

Шифрую маил и пароль:


$alg = MCRYPT_CAST_256;
$mode = MCRYPT_MODE_CBC;
$iv = mcrypt_create_iv(mcrypt_get_iv_size($alg, $mode), MCRYPT_RAND);
$crypt_email = mcrypt_encrypt($alg, '111', $_POST['email'], $mode, $iv);
$crypt_pass = mcrypt_encrypt($alg, '111', $_POST['pass'], $mode, $iv);


Потом засовываю зашифрованые маил и пароль в куки..

setcookie("mail", $crypt_email, time()+3600*24*7*31, '/'); 
setcookie("pass", $crypt_pass, time()+3600*24*7*31, '/');


Потом закрываю браузер..

Открываю снова.

расшифровываю маил и пароль из куков:


$alg = MCRYPT_CAST_256;
$mode = MCRYPT_MODE_CBC;
$iv = mcrypt_create_iv(mcrypt_get_iv_size($alg, $mode), MCRYPT_RAND);
$decrypt_email = mcrypt_decrypt($alg, '111', $_COOKIE['mail'], $mode, $iv);
$decrypt_pass = mcrypt_decrypt($alg, '111', $_COOKIE['pass'], $mode, $iv);


Но получается какая-то фигня....
То они нормлаьно расшифрованы... то какие-то иероглифы....

В чем может быть косяк? Мне лезет в голову мысль, что виноват MCRYPT_RAND. Потому что я шифрую одним скриптом, а расшифровываю другим...

   
 
 автор: Trianon   (05.02.2007 в 15:30)   письмо автору
 
   для: tAleks   (05.02.2007 в 15:18)
 

Куки не могут хранить двоичные данные.
Придется воспользоваться чем-то вроде base64_encode() / base64_decode()

   
 
 автор: tAleks   (05.02.2007 в 15:42)   письмо автору
 
   для: Trianon   (05.02.2007 в 15:30)
 

А с $iv мне что делать?
Его тоже надо в куку засунуть и потом передать скрипту который будет расшифровывать данные?

   
 
 автор: Trianon   (05.02.2007 в 15:56)   письмо автору
 
   для: tAleks   (05.02.2007 в 15:42)
 

нет, зачем... ключ шифрования же Вы туда не суете...

   
 
 автор: tAleks   (05.02.2007 в 16:19)   письмо автору
 
   для: Trianon   (05.02.2007 в 15:56)
 

$iv это не ключ, это вектор.

   
 
 автор: tAleks   (05.02.2007 в 16:22)   письмо автору
 
   для: tAleks   (05.02.2007 в 16:19)
 

И после всех этих манипуляций мне удалось расшифровать то, что зишифровал...
Только вот что-то я не пойму, что получилось....

После расшифровки смотрю на переменые:

echo '<pre>'; var_dump($str);


Выдает:

string(16) "849933"


849933 - это правильно! Но почему показывает длинну 16 символов?!!

Из-за этого, когда я делаю хеш пароля md5, у меня он не сходиться с хешем оригинала, который такой:

string(6) "849933"


Че это за касяк такой? И как с ним бороться?

   
 
 автор: Trianon   (05.02.2007 в 16:29)   письмо автору
 
   для: tAleks   (05.02.2007 в 16:22)
 


Data is the data that will be decrypted with the given cipher and mode. 
If the size of the data is not n * blocksize, the data will be padded with '\0'. 


Данные выравниваются по границе блока.
передавайте вначале строки её длину.
На выходе - восстанавливайте.
Ну или можете попробовать нули отпилить by rtrim(); хотя это более грязный подход.

   
Rambler's Top100
вверх

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