客户端密码加密使用md5.js,解密在PHP
Client side password encryption using md5.js and decryption in PHP
我使用具有user
和password
字段的表单,因为我需要在将表单发送到服务器进行验证之前加密密码。为此,我使用md5.js
在客户端使用盐信息进行加密。
test.php
<script LANGUAGE="Javascript" SRC="js/md5.js"></script>
<script>
function encryptPwd1(strPwd, strSalt, strit) {
var strNewSalt = new String(strSalt);
if (strPwd == "" || strSalt == "")
{
return null;
}
var strEncPwd;
var strPwdHash = MD5(strPwd);
var strMerged = strNewSalt + strPwdHash;
var strMerged1 = MD5(strMerged);
return strMerged1;
}
function validateForm(strSalt, strit) {
var strEncPwd = new String(encryptPwd1(document.getElementById("password").value, strSalt, strit));
document.getElementById("password").value = strEncPwd;
document.login.submit();
return true;
}
</script>
<form method="post" action="test1.php">
<input type="hidden"
name="salt"
id="salt"
value="8qadr4xnCPW275BaNpYX">
<label class="login">Password:</label>
<input
name="password"
id="password"
type="password" />
<input type="submit"
name="gos"
id="gos"
value="Login"
onClick="return validateForm('8qadr4xnCPW275BaNpYX','38');">
</form>
这是包含使用JavaScript和md5.js
的客户端加密的表单。我可以成功地加密消息并将其发送到test1.php
中的test1.php
。我不知道如何解密这个文本,请帮助我。
请稍等。
这是一个坏主意(我可以想到其他形容词,但仅限于坏)。
任何人都可以用任何浏览器读取你的页面源代码,所以如果我这样做会看到什么....
- 我现在知道你正在使用MD5来散列你的数据库上的密码(让我们忽略MD5现在有多糟糕) 你瞧,我还知道你正在使用的SALT !
为什么不直接给我你的银行账号和密码,还有你家和车的钥匙呢?
我想你没有船,否则你现在已经淹死了!
不要尝试在浏览器中这样做,唯一安全的方法是使用SSL。
您希望保护纯文本密码不受"中间 man"的攻击,该man正在侦听网络流量。不幸的是,使用客户端java脚本无法防止这种情况,因为攻击者也可以看到发送的java脚本,并且还可以简单地从请求中删除该脚本。
保护密码传输的唯一可靠方法是使用带SSL加密的HTTPS。这也只适用于已经共享了秘密(浏览器中安装的证书)的情况。
客户端哈希也可以有它的目的,但永远不能取代服务器端哈希。您可以将用于散列的CPU功率转移到客户端。在服务器端,您将不得不再次散列,但使用更少的轮数。
密码加密是需要的,因为密码跟踪将存储在您的计算机上的浏览器内存中,当您提交。如果黑客用一种随处可见的工具进入你的电脑,你存储的数据就会暴露。
解决这个问题的方法是让黑客更难获得你的密码…
有两件事要记住:1)通过表格提交2)通过ajax提交
在这两种情况下,重要的是你要控制你提交的字符编码,并确保你的服务器字符编码与你的应用程序网页同步。
如果你不控制编码,那么你的ajax调用可能最终与你通过表单提交的编码集不同,因此你的解码将不容易。
一旦你控制了它们,然后使用你想解码的任何语言的代码…但是,您需要在服务器端保留salt和stringit的引用。您需要在提供给用户的每个页面上随机生成不同的字符串集。
一种方法是将它们作为隐藏输入包含在表单中。但是,在允许表单继续提交之前,需要动态地从表单中删除输入。- 使用 SJCL 在 Javascript 中加密,在 PHP 中解密
- 用JavaScript加密字符串,用RSA技术用PHP解密
- 与PHP解密相匹配的Javascript加密
- 用PHP mcrypt加密的Javascript解密Blowfish CBC
- Node.js对外部PHP aes-256-cbc进行解密,然后对其进行加密
- javascript->php加密解密-需要澄清和方法请
- 在 PHP 中加密字符串,在 Node.js 中解密
- RSA加密:在PHP中创建密文,并在Javascript中解密
- PHP中的加密和node.js中的解密
- 如何使用PHP mcrypt加密和使用节点加密解密
- CryptoJS使用密码短语加密AES,但PHP解密需要密钥
- PHP加密和CryptoJS解密
- JavaScript中的三重DES加密和PHP中的解密
- 在php中解密河豚
- 可以't使用gnupg(Ubuntu GPG通过PHP)解密openpgpjs(JS)加密的pgp消息
- 在ajax请求中加密密码,并在laravel控制器(.php)中解密
- 用PHP加密消息,用JavaScript解密
- 是否可以用Php加密JWT令牌并用Javascript解密
- 在JavaScript中解密PHP AES/CBC加密字符串
- 使用JS加密数据并在表单中解密PHP