RSACryptoServiceProvider.Encrypt有一个f0AEP参数,可以设置为"true以使用OAEP填充执行直接RSA加密(仅在运行Windows或更高版本的计算机上可用)“。
问题是..。对于OAEP,您有参数,如哈希、MGF哈希和标签。如何使用RSACryptoServiceProvider设置这些?当不设置时,它们默认为什么?即使他们不能被设置,他们仍然应该默认一些我假设的东西?
RSA.Decrypt(Byte[],RSAEncryptionPadding)看起来更加通用,它应该是首选的方法,但是我只是想更多地理解RSACryptoServiceProvider,因为我继承了一些使用它的遗留代码。
发布于 2021-06-01 17:24:24
RSACryptoServiceProvider应用默认值(来自RFC8017),即用于摘要和空标签的SHA1。.NET文档没有详细描述这一点。有关SHA1的提示可以在关于重载Encrypt(Byte[], RSAEncryptionPadding)的备注中找到。最终,由于文档稀少,必须对其进行测试。
对于其他摘要,必须使用其他实现,例如RSACng。即使在这里,这两个摘要也只能选择相同的内容。标签无法设置(但是,通常也没有设置)。
由C#实现的BouncyCastle /OAEP允许独立设置摘要。同样,可以设置标签(称为encodingParams)。这里是C#/Bouncy城堡的一个例子。
https://stackoverflow.com/questions/67787835
复制相似问题