如何在javascript中使用MD5传输密码

我弹出一个jquery对话框模式框,用于登录我的网站。 当用户单击login时,它会对login.php文件发出post请求,如下所示:

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

在将该密码放入发布请求之前,如何对该密码执行md5? 此外,我使用MD5()将用户的密码存储在MySQL数据库中,因此我只想将存储的密码版本与提交的密码的MD5进行比较。 感谢任何回复的人。

crypto-js是一个包含许多加密算法的丰富javascript库。

您所要做的就是调用CryptoJS.MD5(password)

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

如果有人嗅探您的纯文本HTTP流量(或缓存/ cookie)以获取密码只是将密码转换为哈希将无济于事 – 哈希密码可以像普通文本一样“重放”。 客户端需要使用某些随机的东西(如日期和时间)来散列密码。请参阅此处的“AUTH CRAM-MD5”部分: http : //www.fehcom.de/qmail/smtpauth.html

我建议你在这种情况下使用CryptoJS。

基本上,CryptoJS是使用最佳实践和模式在JavaScript中实现的标准和安全加密算法的不断增长的集合。 它们很快,并且具有一致且简单的界面。

因此,如果您想要计算密码字符串的哈希值(MD5),请执行以下操作:

   

因此,此脚本会将密码字符串的哈希值发布到服务器。

有关其他哈希计算算法的更多信息和支持,您可以访问:

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

您可以查看此页面: http : //pajhome.org.uk/crypt/md5/

但是,如果保护密码很重要,那么你应该使用像SHA256这样的东西(MD5不是加密安全的iirc)。 更重要的是,您可能需要考虑使用TLS并获取证书,以便您可以使用https。

回应jt。 你是对的,只有密码的HTML容易受到中间人攻击的影响。 但是,您可以使用服务器中的GUID对其进行播种…

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

这将击败Man-In-The middle ……因为服务器会为每次尝试生成一个新的GUID。

如果您使用的是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()完成这项工作。