Подтвердить что ты не робот

Как использовать MD5 в javascript для передачи пароля

У меня есть окно модального окна jquery, чтобы войти в мой сайт. Когда пользователь нажимает логин, он отправляет запрос в файл login.php следующим образом:

$.post(
      'includes/login.php', 
      { user: username, pass: password },
      onLogin, 
      'json' );

Как мне сделать md5 на этом пароле перед тем, как поместить его в почтовый запрос? Кроме того, у меня есть пароли пользователей, хранящиеся в базе данных MySQL, с использованием MD5(), поэтому я хотел бы просто сравнить сохраненную версию пароля с MD5 представленного пароля. Спасибо всем, кто отвечает.

4b9b3361

Ответ 1

crypto-js - богатая библиотека javascript, содержащая множество алгоритмов криптографии.

Все, что вам нужно сделать, это просто вызвать CryptoJS.MD5(password)

$.post(
  'includes/login.php', 
  { user: username, pass: CryptoJS.MD5(password) },
  onLogin, 
  'json' );

Ответ 2

Если кто-то обнюхивает ваш обычный HTTP-трафик (или кеш/куки) для паролей, просто переключение пароля в хеш не поможет - хеш-пароль можно "воспроизвести" так же, как и обычный текст. Клиенту потребуется хэш-пароль с чем-то случайным (например, дата и время) Смотрите раздел "AUTH CRAM-MD5" здесь: http://www.fehcom.de/qmail/smtpauth.html

Ответ 3

Я бы предложил вам использовать CryptoJS в этом случае.

В основном CryptoJS - это растущий набор стандартных и безопасных криптографических алгоритмов, реализованных в JavaScript с использованием лучших практик и шаблонов. Они быстры, и они имеют последовательный и простой интерфейс.

Итак, если вы хотите вычислить хэш (MD5) вашей строки пароля, сделайте следующее:

<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/md5.js"></script>
<script>
    var passhash = CryptoJS.MD5(password).toString();

    $.post(
      'includes/login.php', 
      { user: username, pass: passhash },
      onLogin, 
      'json' );
</script>

Таким образом, этот script отправит хэш вашей строки пароля на сервер.

Для получения дополнительной информации и поддержки по другим алгоритмам расчета хэша вы можете посетить:

http://code.google.com/p/crypto-js/

Ответ 4

Вы можете проверить эту страницу: http://pajhome.org.uk/crypt/md5/

Однако, если защита пароля важна, вы действительно должны использовать что-то вроде SHA256 (MD5 не является криптографически защищенным iirc). Более того, вы можете захотеть использовать TLS и получить сертификат, чтобы вы могли использовать https.

Ответ 5

В ответ на jt. Вы правы, HTML с только паролем восприимчив к человеку в средней атаке. Однако вы можете засеять его с помощью GUID с сервера...

$.post(
  'includes/login.php', 
  { user: username, pass: $.md5(password + GUID) },
   onLogin, 
  'json' );

Это приведет к поражению Man-In-The middle... тем, что сервер будет генерировать новый GUID для каждой попытки.