RSA加密:在PHP中创建密文,并在Javascript中解密
RSA Encryption: Create a cipher text in PHP and decrypt it in Javascript
我在客户端/javascript中解密在服务器端/PHP中加密的密码文本时遇到问题。
对于 PHP 中的加密,我正在使用 phpseclib
,这是我的示例代码块:
define('PUK', 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDwMKuLMVuo7vHDwFCbpgxx+RNf xSVC2GRWq9rW0fl4snnhRdrpprPRUO1RMV0wA/ao+fvzi1Sl0lcws3srpe28iLAj Wh5vFM/pFstwzjoHBv/6n4rQouIVy2NT18aFrxlQUCs4DHy5eOo21MjQXrgHwCeP HEc7OK+VpaQ/yKKX8wIDAQAB');
include ('Crypt/RSA.php');
$rsa = new Crypt_RSA();
$plaintext = 'My Test Msg';
$rsa -> loadKey(PUK);
$ciphertext = $rsa -> encrypt($plaintext);
//echo $ciphertext;//This also not working!
//echo strrev(base64_encode($ciphertext)); //this is also not working! ref: http://www.frostjedi.com/phpbb3/viewtopic.php?f=46&t=141187
echo base64_encode($ciphertext);
对于客户端/Javascript中的解密,我使用"jsencrypt",这是代码块:
var decrypt = new JSEncrypt();
decrypt.setPrivateKey('MIICXQIBAAKBgQDwMKuLMVuo7vHDwFCbpgxx+RNfxSVC2GRWq9rW0fl4snnhRdrp prPRUO1RMV0wA/ao+fvzi1Sl0lcws3srpe28iLAjWh5vFM/pFstwzjoHBv/6n4rQ ouIVy2NT18aFrxlQUCs4DHy5eOo21MjQXrgHwCePHEc7OK+VpaQ/yKKX8wIDAQAB AoGBAL2EuaZvwLIwL6VUVoYp5AH+FVJo3Ti8Q5e7rEX6kgyxTsf4dX4NIi9T2p1J BQ2A4xx7e1i0pIreyBtOUy6ik0y7e3MlmZidG91pz2KllQqwAMKrOZgPTBWBF7fr xIZERfOlZcIRrqp8ECbeHDyO6fUbfQm+o7vkxMypwjixBslJAkEA+mF8Sxvw+7D6 ntev+XsYj9Xp4wumqR2hK4WcXAAWbFmcd29tgTMKfcgw0Ru6FCGQdUvqu61PniS4 ie+u6zPORwJBAPWUos5KvEixkgSUY0PZOQavRwoXS1GEEvkjlFOyqWqUiKViT9iy UsXKxk3NAVMqIdF5RdAQ/ob9NxtxiuSxYvUCQQDUfFsBWwsebsmieCVNslvb5YyC NOcRaqXWy6MwqJpfBYW2Doh+NxTWPki/japTX1C7WtwwvhpteXhrB1AJJ4QNAkB1 RrsM6vHJgUsq9rYE07qA77lsHz2vuvPYmF4gLkTrie1LlYxt/pK6tCBJTSphzdAC mfh16XezfT8Q0wMyPWf1AkAxS//2T3J1g+dbG9dEKREcpwANxlFIEnOm9XsFd2vO I6Jr0ksaS4o0IeUBDWmMFOgCWVPdJkGrlqlVPQ6P9owA');
var uncrypted = decrypt.decrypt(ciphertext); //The ciphertext is obtained from the server by an AJAX call.
但是发现"未加密"总是为空!
请注意,如果我在phpseclib
或jsencrypt
中使用提到的私钥/公钥对,那么它工作正常。问题在于仅在PHP中的加密和Javascript中的解密中创建。
如果有人能在这方面帮助我,那将是非常可观的。
如果你在Javascript中加密并尝试在PHP中解密会发生什么?这行得通吗?
如果没有,那么如果你可以发布Java生成的密文,那将是有帮助的。这将使我们有机会分解明文的编码,并查看正在使用哪种填充方法 - 如果有的话。
也就是说,与其拥有它,我的猜测是你需要做$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1)
。
相关文章:
- 从数组中删除重复条目,并在javascript中按顺序排列
- 如何将(a*b)两个输入文本值相乘,并在javascript中随文本变化动态显示
- 如何在变量中存储多个模式参数并在 JavaScript 中打印该变量的值
- 对象构造函数并在 Javascript 中返回
- 在 HTML 表中下拉,并在 javascript 中的表数据中选择值
- 跳过用户输入的文本字符串中的特殊字符,并在 Javascript 中的每个单词后添加连字符
- 需要使用Java编码/转义HTML字符串,并在JavaScript中解码HTML字符串
- 如何遍历.txt文件并在javascript中获取值
- 在经典 ASP 中将值从 JavaScript 传递到 VB Scipt,并在 JavaScript 中调用 VB 脚本
- 将对象存储为JSON并在Javascript中访问它
- 类名,用于查找嵌套标记名并在Javascript中赋值
- 手动配置值,并在JavaScript中更改框(圆)的颜色
- 检索php值并在javascript中使用它
- 如何在每次点击按钮时运行特定的方法,并在javascript中更改按钮
- 循环遍历数组,并在javascript中向sql查询添加参数
- 分析运算符并在JavaScript中对其进行评估
- 屏幕依赖于菜单切换,并在javascript中自动打开
- 获取最高的属性值,并在Javascript中的数组中返回它
- 如何从AngularJS中获取变量并在javascript中使用它们
- 如何在当前日期/特定日期中添加min,并在javascript中比较两个日期