Я создаю веб-сайт, и мои способы оплаты будут Google Checkout и Paypal. Там будут ссылки / кнопки, которые будут перенаправлять пользователя на безопасные сайты Google / Paypal для обработки платежей. Это означает, что мне не нужны дополнительные 150 долларов в год и сложность установки SSL-сертификатов для моего сайта.
Однако я хотел бы зашифровать пароли пользователей, когда они входят в систему, чтобы, если они находятся в сети, запущен какой-то злоумышленник. FireSheep и т. Д. Не может прочитать фактический пароль пользователя, поскольку он отправляется на сервер. Остальная часть сайта не нуждается в шифровании, поскольку это не очень конфиденциальные данные и, вероятно, значительно замедлит работу пользователя.
Я считаю, что это можно реализовать с помощью криптографии с открытым ключом. Допустим, процесс происходит примерно так:
Я думаю, что что-то вроде RSA поможет. Но я искал в сети рабочую библиотеку JavaScript, чтобы сделать это, но ни одна из них не кажется совместимой с доступными библиотеками PHP. В любом случае ему необходимо сгенерировать набор ключей, совместимых с JavaScript и PHP.
Кто-нибудь знает о реальном рабочем решении для этого? Если нет, то как насчет того, чтобы написать его, тогда откройте исходный код. К сожалению, написать код шифрования / дешифрования довольно сложно, поэтому я точно не знаю, что делают существующие библиотеки и как их изменить, чтобы они работали. У меня уже есть защита от фиксации / перехвата сеанса, поэтому меня это не интересует. Просто заинтересован в шифровании данных до того, как они попадут на веб-сервер.
NB: Пожалуйста, не размещайте кучу ссылок на автономные библиотеки шифрования Javascript или PHP, я уже нашел их в Google. На самом деле это бесполезно. Что мне нужно, так это код для шифрования JavaScript И дешифрования PHP, который действительно гармонично работает вместе для получения желаемого результата, описанного выше.
Также, если бы вы могли воздержаться от публикации комментариев типа «просто используйте SSL». Я действительно хотел бы найти решение именно этой проблемы, даже если это не лучшая практика, тем не менее это было бы интересно.
Большое спасибо!