Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Шифрование cookie
Форумы портала PHP.SU » » Вопросы новичков » Шифрование cookie

Страниц (1): [1]
 

1. Арикус - 20 Июня, 2016 - 20:02:11 - перейти к сообщению
С простым текстом шифрование
PHP:
скопировать код в буфер обмена
  1. $per = 'Мороженое';
  2. $cryptPer = mcrypt_encrypt(MCRYPT_CAST_256, $cryptKey, $per, MCRYPT_MODE_CFB, $cryptVector);
  3. $decryptPer = mcrypt_decrypt(MCRYPT_CAST_256, $cryptKey, $cryptPer, MCRYPT_MODE_CFB, $cryptVector);
  4. echo $per.' - '.$cryptPer.' - '.$decryptPer;

работает нормально: "Мороженое - 8>&����7RN�n�.Ć - Мороженое"

Но с cookie
PHP:
скопировать код в буфер обмена
  1. if (...)
  2. {$cryptLogin = mcrypt_encrypt(MCRYPT_CAST_256, $cryptKey, $changeLogin[0], MCRYPT_MODE_CFB, $cryptVector);
  3. setcookie('login', $cryptLogin, time()+3600*24*365, '/', '.***.com', 1);}
  4. ...
  5. echo $_COOKIE['login'];
  6.  

при обновлении страницы выдаёт разные значения "���w�" "w�:��" "�ܻ��I"
хотя setcookie не активируется каждый раз, я проверил. Соответственно и расшифровка не проходит нормально.
2. Мелкий - 20 Июня, 2016 - 20:58:53 - перейти к сообщению
У меня есть некоторые очень большие сомнения, что в setcookie можно скармливать бинарные данные.
Попробуйте упаковать в base64 хотя бы.
3. Арикус - 21 Июня, 2016 - 11:39:07 - перейти к сообщению
Мелкий пишет:
Попробуйте упаковать в base64 хотя бы.

PHP:
скопировать код в буфер обмена
  1. if (...)
  2. {$cryptLogin = base64_encode (mcrypt_encrypt(MCRYPT_CAST_256, $cryptKey, $changeLogin[0], MCRYPT_MODE_CFB, $cryptVector));
  3. setcookie('login', $cryptLogin, time()+3600*24*365, '/', '.***.com', 1);}
  4. ...
  5. echo $_COOKIE['login'].' - ';
  6. $_COOKIE['login'] = mcrypt_decrypt(MCRYPT_CAST_256, $cryptKey, base64_decode ($_COOKIE['login']), MCRYPT_MODE_CFB, $cryptVector);
  7. echo $_COOKIE['login'];
  8.  

Само значение cookie больше не отличается, но выдаёт разные расшифровки: "uXdaWP2b - �E�5 �" "uXdaWP2b - j�rMG". Я слабо знаком с принципами шифрования, потому могу лишь предположить, что дело в векторе
PHP:
скопировать код в буфер обмена
  1. $cryptVector = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_CAST_256, MCRYPT_MODE_CFB), MCRYPT_RAND);

который каждый раз произвольно генерируется. Но что с ним делать? Не сохранять же в тех же cookie.
4. Мелкий - 21 Июня, 2016 - 11:54:46 - перейти к сообщению
Кстати, забыл вчера вот об этом милом факте: https://wiki.php.net/rfc/mcrypt-viking-funeral
RFC предлагает использовать openssl, предлагаю согласиться и использовать openssl_encrypt / openssl_decrypt

 

Powered by ExBB FM 1.0 RC1