C# RSACryptoServiceProvider Encrypt() 方法如何工作?
我很好奇,因为 RSA 不是分组密码,但 Encrypt() 方法可以采用任意数量的数据进行加密。
是否使用AES+RSA混合加密?或者它只是(错误地)使用 RSA 作为分组密码?
I am curious since RSA is not a block cipher, yet the Encrypt() method can take an arbitrary amount of data to encrypt.
Does it use AES+RSA hybrid encryption? Or does it simply use RSA (incorrectly) as a block cipher?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
然而 Encrypt() 方法可以根据 MSDN 不能
它甚至有一个
CryptographicException
,内容为“rgb 参数的长度大于允许的最大长度。”。According to MSDN it can't
It even has a
CryptographicException
that reads "The length of the rgb parameter is greater than the maximum allowed length.".不它没有。如果这就是您正在寻找的内容,那么您必须自己做或查看我的旧 博客 关于该主题的条目。
不它没有。它将对提供的
byte[]
应用填充(PKCS#1 1.5 或 OAEP)并对其进行加密。因此确实有长度限制(正如其他人已经指出的那样)。下面是它的样子(来自 Mono 的 BCL 源代码)。
No it does not. If this is what you're looking for then you have to do it yourself or check my old blog entry on the subject.
No it does not. It will apply a padding (either PKCS#1 1.5 or OAEP) to the supplied
byte[]
and encrypt it. As such is does have length limitations (as others already pointed out).Here's how it looks like (from Mono's BCL source code).