Как использовать MD5 в JavaScript для передачи пароля - PullRequest
22 голосов
/ 26 декабря 2009

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

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

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

Ответы [ 6 ]

28 голосов
/ 09 февраля 2010

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

28 голосов
/ 26 декабря 2009

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

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

$.post(
  'includes/login.php', 
  { user: username, pass: CryptoJS.MD5(password) },
  onLogin, 
  'json' );
16 голосов
/ 03 декабря 2012

Я бы предложил вам использовать 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>

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

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

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

5 голосов
/ 26 декабря 2009

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

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

3 голосов
/ 13 февраля 2012

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

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

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

1 голос
/ 31 марта 2018

, если вы используете php jquery, это может помочь:

   $.ajax({
        url:'phpmd5file.php',
        data:{'mypassword',mypassword},
        dataType:"json",
        method:"POST",
        success:function(mymd5password){
            alert(mymd5password);
        }
    });

в вашем файле phpmd5.php:

echo json_encode ($ _ POST ["mypassword"]);

Нет необходимости в jsplugins. просто используйте ajax и позвольте php md5 () сделать работу.

...