Как использовать MD5 в javascript для передачи пароля
У меня есть окно модального окна jquery, чтобы войти в мой сайт. Когда пользователь нажимает логин, он отправляет запрос в файл login.php следующим образом:
$.post(
'includes/login.php',
{ user: username, pass: password },
onLogin,
'json' );
Как мне сделать md5 на этом пароле перед тем, как поместить его в почтовый запрос? Кроме того, у меня есть пароли пользователей, хранящиеся в базе данных MySQL, с использованием MD5(), поэтому я хотел бы просто сравнить сохраненную версию пароля с MD5 представленного пароля. Спасибо всем, кто отвечает.
Ответы
Ответ 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 для каждой попытки.