我在使用Tom Wu的jsbn庫加密JavaScript中的數據時遇到了問題。無法使用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代碼似乎返回一個值,並且沒有錯誤被拋出或返回。
我的猜測與公鑰有關,但顯然這個問題可能在別的地方。