OAEP RSA 参数 RSACryptoServiceProvider.Encrypt

OAEP RSA parameters with RSACryptoServiceProvider.Encrypt

RSACryptoServiceProvider.Encrypt 有一个 f0AEP 参数,可以设置为“true 以使用 OAEP 填充执行直接 RSA 加密(仅在计算机上可用 运行 Windows XP 或更高版本)".

问题是...对于 OAEP,您可以使用 Hash、MGF Hash 和标签等参数。你如何使用 RSACryptoServiceProvider 设置它们?什么时候不设置它们默认为什么?即使他们不能 set 他们仍然应该 default 我假设的东西?

RSA.Decrypt(Byte[], RSAEncryptionPadding) 似乎更加通用并且应该是首选方法,但我只是想更多地了解 RSACryptoServiceProvider,因为我继承了一些使用它的遗留代码。

RSACryptoServiceProvider 应用默认值(来自 RFC8017), i.e. SHA1 for both digests and an empty label. The .NET documentation does not describe this in detail. A hint regarding SHA1 can be found in the remarks about the overload Encrypt(Byte[], RSAEncryptionPadding)。最终,由于文档稀疏,必须对其进行测试。

对于其他摘要,必须使用其他实现,例如RSACng。即使在这里,也只能选择相同的两个摘要。无法设置标签(但通常也不会设置)。

RSA/OAEP BouncyCastle 的 C# 实现允许独立设置摘要。同样,可以设置标签(称为encodingParams)。 是 C#/BouncyCastle 的示例。