我无法使用 Tom Wu 的 jsbn 库在 JavaScript 中加密数据。
我最终得到了一个加密数据,但是当我尝试在 PHP 上解密数据时,openssl_private_decrypt 返回 false。
我编码公钥的方式有可能吗?
这是加密数据的 JavaScript 代码。
function encryptData(data)
{
var $oDataEncrypted = "";
// Do not forget to escape the lines:
var $pem = "-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCoEu5N3x/6aK7E4A9f+7AV/A9T\nT6zu5zdM6L+6XViYC6JssiV1JVE/x/5yd4mVrG8CFkOaF9QqOIFFnQnQw+O+5B/3\nRdoIAssExytGyjY7k11u9jKZI+xRslCxQRoQnUzEVE29Vr6TWUwpxrnpsl+z/5ej\n+Yk8UsMJRkBvmSMdDwIDAQAB\n-----END PUBLIC KEY-----";
// Create the RSA object.
var $key = RSA.getPublicKey($pem);
$oDataEncrypted = RSA.encrypt(data, $key);
return $oDataEncrypted;
}
一种想法是“\n”,也许 JavaScript 与 PHP 不同,它不会自动理解结构,或者库不会。
我正在使用在以下位置获得的最新文件:
http://www-cs-students.stanford.edu/~tjw/jsbn/
https://github.com/ziyan/javascript-rsa/tree/master/src
为了进行测试,我将加密值(使用 Visual Studio 用于 JavaScript 端进行测试)复制并粘贴到我的 PHP 文件中。我将密钥传递给 openssl_private_decrypt() 并返回 FALSE。遗憾的是,openssl_private_decrypt 没有返回原因,JavaScript 代码似乎返回了一个值,并且没有抛出或返回错误。
我的猜测是与公钥有关,但显然问题可能出在其他地方。