我有一个情况,即Java程序使用RSA/ECB/OAEPWithSHA-256AndMGF1Padding加密文本。
我需要在c#中对其进行解密。
在Java中,加密和解密工作得很好。
在Java中使用RSA/ECB/OAEPWithSHA-1AndMGF1Padding进行加密,在c#中使用OaepSHA256进行解密也能正常工作。
然而,当Java使用RSA/ECB/OAEPWithSHA-256AndMGF1Padding加密后,在c#中使用OaepSHA256进行解密时,会出现错误:参数不正确。
Java加密代码:
public static String encrypt(KeyPair keypair, String data) throws NoSuchAlgorithmException, NoSuchPaddingException,
InvalidKeyException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException {
Cipher c = Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding");
//Cipher c = Cipher.getInstance("RSA/ECB/OAEPWithSHA-1AndMGF1Padding");
c.init(Cipher.ENCRYPT_MODE, keypair.getPublic());
return Base64.getEncoder().encodeToString(c.doFinal(data.getBytes()));
}
C#解密代码:
public string DecryptRsa(byte[] encryptedBytes, X509Certificate2 x509Certificate2, RSAEncryptionPadding rSAEncryptionPadding)
{
var text = string.Empty;
using (RSACng csp = (RSACng)x509Certificate2.GetRSAPrivateKey())
{
byte[] bytesDecrypted = csp.Decrypt(encryptedBytes, rSAEncryptionPadding);
text = Encoding.UTF8.GetString(bytesDecrypted);
}
return text;
}
我做错了什么?请帮帮我。
RSA/ECB/OAEPWITHSHA-512ANDMGF1PADDING
,最终变成了new OaepEncoding(new RsaEngine(), new Sha512Digest(), new Sha1Digest(), null);
。 - rgvleeRSA/ECB/OAEPWITHSHA-512ANDMGF1PADDING
,最终变成了new OaepEncoding(new RsaEngine(), new Sha512Digest(), new Sha1Digest(), null);
。 - undefined