我得到了一個Base64編碼的加密字符串,它使用Bouncy Castle在Java中加密。例如Java代碼片段如下:使用Bouncy Castle的C#RSA解密
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);
我需要解密使用充氣城堡結果字符串,但在C# 我已經給出了關於如何做到這一點在Java代碼片斷,但我不能轉換本作C#(原因是我們正在構建.net站點,並且將成爲Java站點內的iFrame,Java站點將把RSA Encrypted字符串傳遞給.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/的例子,但似乎並沒有被輸入字符串值的例子得到加密,然後它會雖然加密/解密過程。
我一直在考慮值模,公共指數,私人expontent,素數p,數q,黃金指數p,黃金指數q和CRT係數 。
我已經看到了,我可以使用以下命令:
IAsymmetricBlockCipher signer = new Pkcs1Encoding(new RsaEngine());
signer.Init(true, pubParameters);
但signer
對象似乎並不具有相同的方法與上面的Java例子。
只有我能使用的方法是
ProcessBlock(byte[] inbuf, int inOff, int inLen);
但我不能看到如何在我的環境中使用此。
這裏的任何幫助將不勝感激。
謝謝Spencer,使用System.Convert.FromBase64String工作(我昨天晚上試了,它沒有工作,所以我想我做錯了什麼)。結合使用Encoding.UTF8.GetString(encdata);得到最終結果。 – mp3duck 2012-04-13 07:18:19