Base64でエンコードされた文字列を受け取り、それをバイト配列に変換し、それを使用してX.509証明書を作成し、RSA暗号化のモジュラスと指数を取得するJavaコードを.NETに移植しようとしています。
これは、変換しようとしている Java コードです。
byte[] externalPublicKey = Base64.decode("base 64 encoded string");
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(externalPublicKey);
Key publicKey = keyFactory.generatePublic(publicKeySpec);
RSAPublicKey pbrtk = (java.security.interfaces.RSAPublicKey) publicKey;
BigInteger modulus = pbrtk.getModulus();
BigInteger pubExp = pbrtk.getPublicExponent();
これを .NET に変換する最善の方法を見つけようとしています。これまでのところ、私はこれを思いつきました:
byte[] bytes = Convert.FromBase64String("base 64 encoded string");
X509Certificate2 x509 = new X509Certificate2(bytes);
RSA rsa = (RSA)x509.PrivateKey;
RSAParameters rsaParams = rsa.ExportParameters(false);
byte[] modulus = rsaParams.Modulus;
byte[] exponent = rsaParams.Exponent;
私にはそれがうまくいくように見えますが、Javaコードからベース64でエンコードされた文字列を使用してX509証明書を生成すると、 CryptographicExceptionがスローされます。私が受け取る正確なメッセージは次のとおりです。
要求されたオブジェクトが見つかりません。
Java の X.509 実装は .NET と互換性がないだけですか、それとも Java から .NET への変換に何か問題がありますか?
それとも、この場合、Java から .NET への変換がまったくないのでしょうか?