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"이고 PHP와 달리 JavaScript는 자동으로 구문을 이해하지 못하거나 라이브러리가 이해하지 못할 수 있습니다.
전에서 얻은 최신 파일을 사용하고 있습니다 :에 (테스트를위한 자바 스크립트 팀의 비주얼 스튜디오를 사용하여) 암호화 된 값을 테스트, 나는 복사를 들어
http://www-cs-students.stanford.edu/~tjw/jsbn/
https://github.com/ziyan/javascript-rsa/tree/master/src
을 붙여 넣을 내 PHP 파일. openssl_private_decrypt()에 내 키를 전달하고 FALSE를 반환합니다. 슬프게도 openssl_private_decrypt는 이유를 반환하지 않고 JavaScript 코드가 값을 반환하는 것으로 나타나며 오류가 발생하거나 반환되지 않습니다.
내 생각 엔 공개 키가있는 것 같지만 분명히 문제가 다른 곳에있을 수 있습니다.