我正在使用 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);
答案 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);