我得到了一个 Base64 编码的加密字符串,它是在 Java 中使用 Bouncy Castle 加密的。下面的示例 Java 代码段:
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.ENCRYPT_MODE, key.getPublic());
byte[] encryptedText = cipher.doFinal("xxxxx|xxxxx".getBytes("UTF-8"));
String encodedText = new BASE64Encoder().encode(encryptedText);
我需要使用 Bouncy Castle 解密生成的字符串,但在 C# 中,我得到了一个关于如何在 Java 中执行此操作的代码片段,但我无法将其转换为 C#(原因是我们正在构建一个 .net 站点,并且将成为 Java 站点中的 iFrame。Java 站点将把 RSA 加密字符串传递给 .NET 站点)。下面要解密的示例 Java 代码:
Cipher cipherDec = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipherDec.init(Cipher.DECRYPT_MODE, key.getPrivate());
byte[] decodedText = new BASE64Decoder().decodeBuffer(encodedText);
byte[] decryptedText = cipherDec.doFinal(decodedText);
String finalValue = new String(decryptedText, "UTF-8");
我已经从http://www.bouncycastle.org/csharp/下载了示例,但似乎没有输入字符串值进行加密的示例,然后通过加密/解密过程。
我得到了模数、公共指数、私人指数、素数 P、素数 q、素数指数 p、素数指数 q和crt 系数的值。
我已经看到我可以使用以下内容:
IAsymmetricBlockCipher signer = new Pkcs1Encoding(new RsaEngine());
signer.Init(true, pubParameters);
但是该signer
对象似乎没有与上面的 Java 示例相同的方法。
我唯一可以使用的方法是
ProcessBlock(byte[] inbuf, int inOff, int inLen);
但是我看不到如何在我的上下文中使用它。
这里的任何帮助将不胜感激。