1

サーバー側/PHP で暗号化されたクライアント側/javascript の暗号文を解読するのに問題があります。

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.

しかし、「暗号化されていない」は常に null であることがわかります!

phpseclib上記の秘密鍵と公開鍵のペアを使用すると、またはjsencryptその後で正常に機能することに注意してください。問題は、PHP での暗号化と Javascript での復号化のみを作成することです。

誰かがこの点で私を助けることができれば、それは本当に価値があります.

4

1 に答える 1

1

Javascript で暗号化し、PHP で復号化しようとするとどうなりますか? それは動作しますか?

そうでない場合は、Java によって生成された暗号文を投稿できれば役に立ちます。これにより、平文のエンコーディングを分解し、どのパディング方法が使用されているかを確認する機会が得られます。

そうは言っても、それを持っている代わりに、私の推測では、手に負えないことは、あなたがする必要があるということです$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1).

于 2013-09-10T13:02:18.950 に答える