2012-03-16 1 views
0

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

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

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

+3

https - шифрование; кто именно вы пытаетесь не читать данные? – mfrankli

+0

Если это https-соединение, в чем проблема? –

+0

Кроме того, хеширование! = Шифрование. 'SHA *' не являются алгоритмами шифрования. – delnan

ответ

1

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

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

0

httpsявляется зашифрованным форматом. Ты в порядке.

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

1

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

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

Include nonce and block count in PyCrypto AES MODE_CTR

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

0

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

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

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

0

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

SHA224, SHA1 или MD5 не являются шифрование, а hashing function, что означает, что они являются необратимыми.

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^