我弹出一个jquery对话框模式框,用于登录我的网站。当用户单击login时,它会对login.php文件发出post请求,如下所示:
$.post(
'includes/login.php',
{ user: username, pass: password },
onLogin,
'json' );
如何在将密码放入发布请求之前对该密码执行md5操作?另外,我使用MD5()将用户密码存储在MySQL数据库中,因此我想将存储的密码版本与提交的密码的MD5进行比较。感谢任何回复的人。
答案 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>
因此,此脚本会将密码字符串的哈希值发布到服务器。
有关其他哈希计算算法的更多信息和支持,请访问:
答案 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()完成这项工作。