php - RSA加密: Create a cipher text in PHP and decrypt it in Javascript

标签 php javascript rsa phpseclib

我无法在客户端/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.

但是发现“未加密”始终为空!

请注意,如果我在 phpseclibjsencrypt 中使用提到的私钥/公钥对,那么它工作正常。问题仅在于 PHP 中的加密和 Javascript 中的解密。

如果有人能在这方面帮助我,我将非常感激。

最佳答案

如果您在 Javascript 中加密并尝试在 PHP 中解密会发生什么?这有效吗?

如果没有,那么如果您可以发布 Java 生成的密文,那会很有帮助。这将使我们有机会分解明文的编码并查看正在使用哪种填充方法(如果有)。

也就是说,我的猜测是,您需要执行 $rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1)

关于php - RSA加密: Create a cipher text in PHP and decrypt it in Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18702563/

相关文章:

php - 在 codeigniter 中插入评论问题

php - 在哪里清理 PHP $_POST[] 输入?

javascript - CanvasJS:xValueFormatString 根本不执行任何操作

JAVA:如何在具有密码保护的pem文件中保存私钥

php - 多个 PHP session

php - 上一个/下一个记录按钮 php/mysql 的问题

javascript - 如何获取在Android WebView的html部分中输入的文本,以便它可以被Android native 代码处理

javascript - 为什么我们需要在父组件中保存状态

node.js - NodeJS 加密 RSA,与 Elixir/Erlang PublicKey 不兼容?

cryptography - 生成强 RSA key 的技巧