RSA加密只能处理有限的数据有效载荷吗? ......我对这个理论感到困惑......从理论上讲,没有关于这一点的说明......
答案 0 :(得分:76)
RSA对单个消息进行加密,该消息的长度略小于模数。具体来说,消息首先被“填充”,产生一个字节序列,然后被解释为0和 n-1 之间的一个大整数,其中 n 是模数(公钥的一部分) - 因此填充的消息不能超过模数,这意味着原始消息的严格最大长度。
具体来说,使用最常见的填充方案(PKCS#1“old-style”,又称“v1.5”),填充为消息添加至少11个字节,并且填充的总消息长度必须为等于模数长度,例如1024位RSA密钥为128字节。因此,最大消息长度为117个字节。请注意,生成的加密消息长度与模数大小相同,因此加密必须将消息大小扩展至少11个字节。
使用RSA加密大邮件(比如电子邮件)的正常方法是使用混合方案:
由于各种原因,将一条大信息拆分成如此多的117字节块,每块都用RSA加密,通常不会这样做:如果没有增加额外的弱点,很难做到这一点;每个块将扩展11个字节,这意味着不可忽略的总消息大小增加(网络带宽可能是稀缺资源);对称加密要快得多。
答案 1 :(得分:12)
在不太安全的基本RSA算法(没有填充)中,消息的大小限制为小于模数。
为了增强RSA的安全性,您应该使用PKCS1中定义的填充方案。根据您选择的方案,消息的大小可以明显小于模数。 http://en.wikipedia.org/wiki/PKCS1