rew*_*olf 4 python encryption rsa
我正在努力找到在ECB模式下使用RSA和python中的PKCS1填充的任何方法.我查看了pyCrypto,但是他们在master分支中没有PKCS1填充(但是在补丁中).不过我在M2Crypto包中找到了带有PKCS1的RSA,但我不确定我是否可以选择ECB模式......
Tho*_*nin 11
除非你做错了,否则诸如ECB之类的链接模式对RSA没有任何意义.
ECB用于分组密码:输入数据被分成相等大小的块,每个块都是单独加密的.这会导致一些弱点,因此对于分组密码最好避免使用ECB模式.
RSA不是分组密码.特别是,RSA必然会扩大加密消息:使用1024位RSA密钥(相当典型的大小),可以加密最多117个字节的消息,但结果是128字节的值.
可以想象得到一个更大的消息,将它分成长度为117个字节(或更少)的单个块,并对它们各自进行单独的RSA加密,但没有人这样做,主要是因为大小增加和CPU成本.此外,根本没有研究与分裂和重组相关的安全问题,因此很可能结果非常弱.通常,当加密库需要填充模式作为算法名称的一部分时,例如在" RSA/ECB/PKCS1Padding"中,这只是由于名称的语法约束,并且ECB实际上忽略了链接部分()(这就是Java所做的) , 例如).
实际上,当加密一些可能大于最大RSA输入大小的数据时,使用混合加密:RSA加密的是随机对称密钥(例如,一堆16个均匀随机字节),并且该密钥用于对称加密(例如用AES)实际数据.这更节省空间(因为对称加密不会扩大块)和CPU效率(对称加密比非对称加密,特别是RSA 解密快得多).
| 归档时间: |
|
| 查看次数: |
7182 次 |
| 最近记录: |