使用Bouncy Castle的java C#RSA解密
我得到了一个Base64编码的加密字符串,它是使用Bouncy Castle在Java中加密的。下面是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、素数指数q和crt系数的值
我发现我可以使用以下方法:
IAsymmetricBlockCipher signer = new Pkcs1Encoding(new RsaEngine());
signer.Init(true, pubParameters);
但是signer
对象似乎没有与上面的Java示例相同的方法
我唯一能用的方法是
ProcessBlock(byte[] inbuf, int inOff, int inLen);
但我不知道如何在我的上下文中使用它
这里的任何帮助都将不胜感激
# 1 楼答案
我不太明白你为什么要用Bouncycastle。下面的小代码片段显示了仅使用的RSA加密/解密示例。网络课程:
# 2 楼答案
为了帮助他人,要转换的最终代码如下:
mod、xp等都是大整数:
需要以下
using
指令:可从bouncycastle网站获取http://www.bouncycastle.org/csharp/
# 3 楼答案
您是否尝试过将base 64字符串转换为字节数组,然后使用process block方法?可能不止这些,但这绝对是我迈出的第一步
下面是一个如何做到这一点的例子:http://msdn.microsoft.com/en-us/library/system.convert.frombase64string.aspx