我有一个网站,我正在努力确保我的表格安全。我已经做了一些研究,尽管我不是程序员,但我正在通过自制的质询-响应机制对用户进行身份验证,并且我正在使用 mcrypt 库中的 aes 加密对表单值进行加密。到目前为止一切都很好。除了我的 aes 密码需要从客户端发送到服务器......安全。我认为 RSA 可以解决问题。所以我下载了 phpseclib,我已经在服务器端成功加密/解密。现在,我需要一个客户端代码来加密 RSA。我在这里使用了这个库http://www.ohdave.com/rsa/。现在......这是我的问题。
- 我使用 phpseclib 在 php 中生成一对密钥。
- 我提取私有指数、公共指数和模数(公共)。
我将公共指数和模数(公共)发送到 javascript。
include('Scripts/phpseclib/Crypt/RSA.php'); require_once('Scripts/phpseclib/Math/BigInteger.php'); session_start(); $rsa = new Crypt_RSA(); extract($rsa->createKey(512)); $priv = $rsa->_parseKey($privatekey,CRYPT_RSA_PRIVATE_FORMAT_PKCS1); $privExp = $priv['privateExponent']->toHex(); $pubExp = $priv['publicExponent']->toHex(); $pubMod = $priv['modulus']->toHex(); $rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1); $_SESSION['privatekey']=$privatekey; $_SESSION['publickey']=$publickey;
javascript 生成一个随机数,它将成为我将进一步用于 aes 加密的密码。javascript将使用服务器从php发送的公共指数和模数(public)来加密javascript中随机生成的字符串(这将成为aes-key),并将其发送回php服务器解密。
password = random();
key = new RSAKeyPair(
"<?php echo $pubExp; ?>",
"",
"<?php echo $pubMod; ?>"
);
x = encryptedString(key,password);
y = decryptedString(key,x);
document.write(" text cryptat = "+x);
document.write(" text decryptat = "+y);
window.location = "rsa.php?text="+x;
</script>
php 服务器将接收加密字符串,并使用从 start 生成的私有指数将能够解密 aes-key(由客户端 javascript 随机生成),从而在客户端-服务器之间生成密钥协议而无需外部干预。
问题:javascript 加密随机字符串......但不是 PKCS#1 v1.5 ......phpseclib 只接受 PKCS#1 v1.5 填充,因此 php 脚本无法正确解密。
请帮助我查找或修改 JavaScript,以便将它期望的加密字符串格式 PKCS# v 1.5 输出到 php 脚本。