【发布时间】:2012-04-25 01:48:59
【问题描述】:
我得到了一个 Base64 编码的加密字符串,它是在 Java 中使用 Bouncy Castle 加密的。下面是 Java sn-p 示例:
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 中执行此操作的代码 sn-p,但我无法将其转换为 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);
但我看不出如何在我的上下文中使用它。
我们将不胜感激。
【问题讨论】:
标签: c# java cryptography rsa bouncycastle