| |
|
|
| | Шифрую маил и пароль:
$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. Потому что я шифрую одним скриптом, а расшифровываю другим... | |
| |
|
|
| |
|
|
| |
для: tAleks
(05.02.2007 в 15:18)
| | | Куки не могут хранить двоичные данные.
Придется воспользоваться чем-то вроде base64_encode() / base64_decode() | |
| |
|
|
| |
|
|
| |
для: Trianon
(05.02.2007 в 15:30)
| | | А с $iv мне что делать?
Его тоже надо в куку засунуть и потом передать скрипту который будет расшифровывать данные? | |
| |
|
|
| |
|
|
| |
для: tAleks
(05.02.2007 в 15:42)
| | | нет, зачем... ключ шифрования же Вы туда не суете... | |
| |
|
|
| |
|
|
| |
для: Trianon
(05.02.2007 в 15:56)
| | | $iv это не ключ, это вектор. | |
| |
|
|
| |
|
|
| |
для: tAleks
(05.02.2007 в 16:19)
| | | И после всех этих манипуляций мне удалось расшифровать то, что зишифровал...
Только вот что-то я не пойму, что получилось....
После расшифровки смотрю на переменые:
echo '<pre>'; var_dump($str);
|
Выдает:
849933 - это правильно! Но почему показывает длинну 16 символов?!!
Из-за этого, когда я делаю хеш пароля md5, у меня он не сходиться с хешем оригинала, который такой:
Че это за касяк такой? И как с ним бороться? | |
| |
|
|
| |
|
|
| |
для: 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(); хотя это более грязный подход. | |
| |
|
|