Tôi đã được cung cấp một chuỗi mã hóa được mã hóa Base64, được mã hóa bằng Java sử dụng Lâu đài Bouncy. đoạn mã ví dụ Java dưới đây:Giải mã C# RSA sử dụng Lâu đài Bouncy
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);
tôi cần phải giải mã chuỗi kết quả sử dụng Bouncy Castle, nhưng trong C# Tôi đã nhận được một đoạn mã trên như thế nào để làm điều này trong Java, nhưng tôi không thể chuyển đổi này cho C# (lý do là chúng tôi đang xây dựng một trang web .net, và sẽ là một iFrame trong một trang Java. Trang web Java sẽ chuyển qua chuỗi RSA được mã hóa tới trang .NET). Ví dụ mã Java để giải mã bên dưới:
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");
Tôi đã tải các ví dụ từ http://www.bouncycastle.org/csharp/ nhưng có vẻ không phải là một ví dụ về nhập một giá trị chuỗi để có được mã hóa, và sau đó nó sẽ mặc dù mã hóa/giải mã quá trình .
Tôi đã được cấp giá trị cho mô đun, công mũ, expontent tin, Thủ P, thủ q, Thủ mũ p, Thủ mũ q và crt hệ số .
Tôi đã thấy rằng tôi có thể sử dụng như sau:
IAsymmetricBlockCipher signer = new Pkcs1Encoding(new RsaEngine());
signer.Init(true, pubParameters);
Nhưng đối tượng signer
dường như không có phương pháp tương tự như các ví dụ Java trên.
Chỉ phương pháp tôi có thể sử dụng là
ProcessBlock(byte[] inbuf, int inOff, int inLen);
Nhưng tôi không thể nhìn thấy làm thế nào để sử dụng này trong bối cảnh của tôi.
Mọi trợ giúp ở đây sẽ được đánh giá cao nhất.
Cảm ơn Spencer, sử dụng System.Convert.FromBase64String đã hoạt động (Tôi đã thử đêm qua và không hoạt động, vì vậy tôi đoán mình đã làm điều gì đó sai). Điều đó kết hợp với việc sử dụng Encoding.UTF8.GetString (encdata); để có được kết quả cuối cùng. – mp3duck