web-dev-qa-db-fra.com

Comment utiliser MD5 en javascript pour transmettre un mot de passe

J'ai une boîte de dialogue modale jquery pop-up pour me connecter à mon site Web. Lorsqu'un utilisateur clique sur connexion, il envoie une demande de publication à un fichier login.php comme suit:

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

Comment puis-je faire un md5 sur ce mot de passe avant de le mettre dans la demande de publication? De plus, j'ai les mots de passe de l'utilisateur stockés dans une base de données MySQL en utilisant MD5 (), donc je voudrais simplement comparer la version stockée du mot de passe avec le MD5 du mot de passe soumis. Merci à tous ceux qui ont répondu.

22
adhanlon

crypto-js est une bibliothèque javascript riche contenant de nombreux algorithmes de cryptographie.

Tout ce que vous avez à faire est d'appeler simplement CryptoJS.MD5(password)

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

Si quelqu'un renifle votre trafic HTTP en texte brut (ou cache/cookies) pour les mots de passe, le simple fait de transformer le mot de passe en hachage n'aidera pas - Le mot de passe de hachage peut être "rejoué" tout comme le texte brut. Le client devra hacher le mot de passe avec quelque chose d'un peu aléatoire (comme la date et l'heure) Voir la section sur "AUTH CRAM-MD5" ici: http://www.fehcom.de/qmail/smtpauth.html

28
jt.

Je vous suggère d'utiliser CryptoJS dans ce cas.

Fondamentalement, CryptoJS est une collection croissante d'algorithmes cryptographiques standard et sécurisés implémentés en JavaScript en utilisant les meilleures pratiques et modèles. Ils sont rapides et ont une interface cohérente et simple.

Donc, si vous souhaitez calculer le hachage (MD5) de votre chaîne de mot de passe, procédez comme suit:

<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>

Ce script affichera donc le hachage de votre chaîne de mot de passe sur le serveur.

Pour plus d'informations et d'assistance sur d'autres algorithmes de calcul de hachage, vous pouvez visiter à:

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

16
theCodeMachine

Vous voudrez peut-être consulter cette page: http://pajhome.org.uk/crypt/md5/

Cependant, si la protection du mot de passe est importante, vous devriez vraiment utiliser quelque chose comme SHA256 (MD5 n'est pas iirc sécurisé cryptographiquement). Plus encore, vous voudrez peut-être envisager d'utiliser TLS et d'obtenir un certificat pour pouvoir utiliser https.

5
SapphireSun

En réponse à jt. Vous avez raison, le HTML avec juste le mot de passe est sensible à l'attaque de l'homme au milieu. Cependant, vous pouvez l'amorcer avec un GUID du serveur ...

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

Cela vaincrait le Man-In-The Middle ... en ce que le serveur générerait un nouveau GUID pour chaque tentative.

3
James

si vous utilisez php jquery, cela pourrait aider:

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

sur votre fichier phpmd5.php:

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

aucun jsplugins nécessaire. utilisez simplement ajax et laissez php md5 () faire le travail.

1
fritz fritz Fritz