RSACryptoServiceProvider使用ECB和MGF1填充进行解密

时间:2018-01-04 12:18:42

标签: c# .net encryption cryptography rsacryptoserviceprovider

我正在使用 System.Security.Cryptography 包中的 RSACryptoServiceProvider 。我需要使用我的私钥来解密来自 Android 应用程序的一些输入。它使用 RSA/ECB/OAEPWithSHA256AndMGF1Padding 算法在Java代码中对其进行加密。
问题是我找不到任何方法来设置填充 MGFT1 ECB 你能以某种方式帮助我吗?这些设置是默认设置还是应该使用其他库?很难相信这是不可能的。

我的代码的关键部分在这里:

RSAParameters RSAParamPrivateKey = DotNetUtilities.ToRSAParameters(privateKey)
RSACryptoServiceProvider csp = new RSACryptoServiceProvider();
csp.ImportParameters(RSAParamPrivateKey);

return csp.Decrypt(encryptedAESKey, RSAEncryptionPadding.OaepSHA256);

1 个答案:

答案 0 :(得分:1)

“ECB”(希望)毫无意义。 RSA应该只用于一个数据块。

MGF1是唯一标准定义的MGF,因此它不是.NET允许您当前指定的选项。

使用SHA-1以外的算法的OAEP超出RSACryptoServiceProvider的能力。但RSACng可以做到:

RSAParameters RSAParamPrivateKey = DotNetUtilities.ToRSAParameters(privateKey);
RSA rsa = new RSACng();
rsa.ImportParameters(RSAParamPrivateKey);

return rsa.Decrypt(encryptedAESKey, RSAEncryptionPadding.OaepSHA256);