首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用jsbn正确加密Javascript中的数据

无法使用jsbn正确加密Javascript中的数据
EN

Stack Overflow用户
提问于 2013-03-28 02:42:15
回答 1查看 935关注 0票数 0

我在使用Tom Wu的jsbn库加密JavaScript中的数据时遇到了麻烦。

我最终得到了一个加密的数据,但是当我尝试在PHP上解密数据时,openssl_private_decrypt返回false。

我编码公钥的方式有没有可能?

下面是加密数据的JavaScript代码。

代码语言: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

为了进行测试,我将加密值复制并粘贴到我的JavaScript文件中(使用Visual Studio进行测试)。我将我的键传递给openssl_private_decrypt(),并得到FALSE的返回。遗憾的是,openssl_private_decrypt没有返回原因,并且JavaScript代码似乎返回值,并且没有抛出或返回任何错误。

我的猜测是与公钥有关,但显然问题可能出在其他地方。

EN

回答 1

Stack Overflow用户

发布于 2013-03-30 05:11:26

为了子孙后代,我会给出答案。答案在我面前已经有一段时间了,只是太过迷茫而没有意识到。

JavaScript以base-64编码数据,因此必须先对数据进行解码,然后才能识别它。因此,在PHP端,需要添加一个简单的内容:

代码语言:javascript
复制
if(!openssl_private_decrypt(base64_decode($dataArg1), $sensitiveData, $key))

我将数据参数包装在base64_decode()中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15666885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档