我有一个网站,我正在尝试使我的表单安全。我做了一些研究,即使我不是程序员,我通过自制的质询 - 响应机制对用户进行身份验证,并且我使用mcrypt库中的aes加密来加密表单值。到目前为止都很好。除了我的密码需要从客户端发送到服务器...安全。我认为RSA会做到这一点。所以我下载了phpseclib,我已经在服务器端成功加密/解密了。现在,我需要一个客户端代码来加密RSA。我在这里使用了这个库http://www.ohdave.com/rsa/。 现在......这是我的问题。
我将公共指数和模数(公共)发送到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-encryption的密码。 javascript将使用从服务器发送的公共指数和模数(公共)来加密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脚本无法正确解密。 / p>
请帮助我查找或修改JavaScript,以便向PHP脚本输出预期的加密字符串格式PKCS#v 1.5。
答案 0 :(得分:0)
phpseclib默认执行OAEP填充。这是一个使javascript与之互操作的演示:
http://www.frostjedi.com/terra/dev/rsa/index.php
这是一个在javascript中执行PKCS#1填充的网站: