Как зашифровать пароль, отправленный на сервер - PullRequest
0 голосов
/ 16 марта 2012

Я пытаюсь отправить данные об имени пользователя и пароле из веб-формы на мой сервер.

Пароль передается в виде обычного текста через соединение https, затем должным образом шифруется на сервере (используя python hashlib.sha224) перед сохранением, однако я не уверен, как передать текст пароля на сервер в зашифрованном виде. формат.

Мой веб-клиент написан на javascript, а сервер написан на python.

Ответы [ 5 ]

1 голос
/ 16 марта 2012

На самом деле вы передаете пароль в зашифрованном виде, потому что вы используете SSL. Кроме того, вы не шифруете пароль, вы хешируете пароль на сервере.

В любом случае, вы можете использовать что-то вроде jCryption . crypt-js также может соответствовать вашим целям.
Для python есть крипто библиотека, которая называется PyCrypto . Но у меня есть проблема со связью между Javascript и Python. Я пытаюсь сделать что-то подобное, но есть проблема с этим. Я думаю, что мой вопрос поможет вам с вашим.

Включить nonce и количество блоков в PyCrypto AES MODE_CTR

Но в целом вы уже решили проблему самостоятельно, используя https.

1 голос
/ 16 марта 2012

Вы должны зашифровать его в JavaScript. К сожалению, JavaScript не предлагает никаких криптографических инструментов "из коробки", поэтому вам придется либо использовать стороннюю библиотеку, либо написать что-то самостоятельно.

Как уже говорили другие, HTTPS предназначен для шифрования всего трафика, так что, возможно, вам не нужно ничего лишнего? Однако, если вы это сделаете, вы можете взглянуть на эту статью , которая может пролить свет на проблему. Удачи ! :)

0 голосов
/ 16 марта 2012

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

SHA224, SHA1 или MD5 - это не шифрование, а функция хеширования , что означает, что они необратимы.

В некоторых ответах предлагается хэширование паролей на стороне клиента. Тем не менее, необратимый не означает необратимый . Имея простой хешированный пароль, относительно легко получить соответствующий пароль из хеша (см., Например, Радужные таблицы ).

Поэтому вы не должны хэшировать пароль на стороне клиента , а объединять его с некоторой произвольной строкой, выбранной на стороне сервера (обычно называемой salt ) и хэшировать результат .

0 голосов
/ 16 марта 2012

Канал HTTPS, по которому вы отправляете пароль на сервер, обеспечивает достаточно хорошее шифрование.

Однако вам необходим более безопасный механизм хранения пароля.Используйте алгоритм типа «bcrypt» со многими тысячами итераций хеша (bcrypt называет это фактором стоимости, и он должен быть не менее 16, что означает 2 16 итераций) и случайную «соль».Это работает путем получения ключа шифрования из пароля, который является вычислительно дорогостоящим процессом, с последующим использованием этого ключа для шифрования некоторого известного зашифрованного текста, который сохраняется для сравнения при будущих попытках входа в систему.

Кроме того, использование HTTPS натолько логин не достаточно.Вы должны использовать его для любых запросов, которые требуют аутентифицированного пользователя или содержат куки аутентификации.

0 голосов
/ 16 марта 2012

https - это зашифрованный формат.Вы хороши.

Если вы все равно хотите сделать это на стороне клиента, я рекомендую хешировать его с sha1У этого парня, кажется, есть некоторые библиотеки: http://pajhome.org.uk/crypt/md5/ - SHA1, sha256, md5 и т. Д.

...