Есть ли инструмент для авторизация на сайте, с шифрованием, без https?

Добрый день. Пишу небольшой сайт, решающий довольно узкозаточенную задачу. Странички довольно сильно нашпигованы javascript (flot, jqGrid и т.п.). На серверной стороне, кроме этих страниц, - питон-скрипты, отвечающие в json. Понадобилось добавить систему авторизации для небольшого количества постоянных пользователей. При этом нет желания залезать в https ибо на эти же страницы должны попадать и гости, но с урезанной функциональностью. Начал гуглить и обнаружил, что не могу найти такого решения, которое мне кажется совершенно естественным.

1. Учитывая, что у меня всего несколько пользователей, занести их пароли в базу я могу просто с консоли. Будут они там лежать в виде хэшей (соленых или нет - вопрос второй) или иначе зашифрованном виде. Например, rsa. Только заниматься тем, что генерировать для пользователей private-ключи - для этой задачи считаю сильно избыточным.
2. На странице логина спрашиваю пароль и хэширую javascript'овой функцией. Можно не хэшировать, а зашифровать public-ключем, который лежит в составе той же страницы.
3. Присланный в ajax-запросе, зашифрованный пароль (или его хэш?) как то "сворачиваю" с лежащим в базе и понимаю, что в основе и того и другого лежит один и тот же "парол".

Можно сказать, что это слегка извращенный вариант двух ключей. Public - один на всех и лежит он прямо в теле страницы. Private - у каждого свой и им является пароль. Ну или что-то вроде того, что описано eri тут: https://toster.ru/answer?answer_id=681517 .

Подскажите, может это всем известный инструмент, а я по серости его нагуглить не могу? Куда рыть?
  • Вопрос задан
  • 162 просмотра
Решения вопроса 1
@artp Автор вопроса
Сам нашел. Надо правильно формулировать вопросы. То, что я так невнятно описал реализуется стандартным способом "цифровой подписи". Для шифрования и дешифровки используем схему Эль Гамала. В качестве private-ключа используем пароль пользователя. Шифруем, например, его логин. В базе же храним public-key, сгенерировав его по произнесенному по телефону паролю (приват-ключу), в тот момент, когда заводили пользователя. Реализаций алгоритма, например, https://gist.github.com/mindoftea/624f769b193215c534ac
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
mxms
@mxms
IT voodoo
Ну вот библиотека JS для шифрования передаваемых данных.
https://github.com/travist/jsencrypt
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы