秘密鍵と公開鍵の両方を持つmakecertによって生成された証明書を使用しています。Java側はこの公開鍵を使用してデータを暗号化し、.netはそれを復号化して戻します。
Javaの暗号化された64ビットエンコードされた文字列を復号化しようとしていますが、不正なデータを取得しています。
すべてがon.Netで問題ないかどうかを確認するために、最初に公開鍵で暗号化してから、同じ証明書を使用して秘密で復号化しようとしました。私のコードは次のようになります。
X509Certificate2 cert = GetCert(key, StoreName.My, StoreLocation.LocalMachine);
RSACryptoServiceProvider provider = (RSACryptoServiceProvider)cert.PrivateKey;
RSACryptoServiceProvider publicprovider = (RSACryptoServiceProvider)cert.PublicKey.Key;
if (cert.HasPrivateKey)
MessageBox.Show("Got private key");
byte[] encrypted = publicprovider.Encrypt(Encoding.UTF8.GetBytes(text), false);
byte[] decryptedBytes = provider.Decrypt(encrypted, false);
ここでもエラーが発生します。私は何かが足りませんか?
証明書は公開鍵と秘密鍵の両方で有効に見えます。