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

时间:2009-12-26 00:20:33

标签: javascript jquery post passwords md5

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

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

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

6 个答案:

答案 0 :(得分:28)

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

您只需拨打CryptoJS.MD5(password)

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

答案 1 :(得分:27)

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

答案 2 :(得分:16)

我建议你在这种情况下使用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/

答案 3 :(得分:5)

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

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

答案 4 :(得分:3)

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

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

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

答案 5 :(得分:1)

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