RSA算法密钥长度的选取直接关系到加解密、签名验签的安全强度和运算速度。密钥的长度其实是指公钥模N的长度(以Bit为单位),理论上来说N越大,安全强度越高,算法运算速度越慢。所以,RSA算法密钥长度要结合项目的实际状况来选取,以求在安全性和运算性能之间取得平衡点。例如:有些产品的应用场景要求RSA加解密必须具备很高的实时性,好比公交刷卡机。若是RSA运算时间过长会致使刷卡交易总体时间延长,用户刷卡体验变差,上下车客流速度变慢,所以这种应用场景不适合选取太高的公钥模长。有些PC端产品依托于强大CPU性能,不须要过多考虑RSA运算速度,还有些终端产品,虽然MCU运算性能偏弱,可是增长了一颗带有协处理器的加密芯片来协助MCU完成运算,这样就能很好的实现运算加速,所以不须要过多担忧速度问题,能够选取较高的公钥模长来提高系统安全强度。整体来讲,如今市场上RSA公钥长度应用较多的是1024位和2048位,简称RSA1204算法和RSA2048算法。
RSA几个特性以下:
(1)密钥长度增加一倍,公钥操做所需时间增长约4倍,私钥操做所需时间增长约8倍,公私钥生成时间约增加16倍。
(2) 一次能加密的密文长度与公钥长度成正比,如RSA1024,一次能加密的内容长度为 1024/8 = 128byte(包含填充字节)。因此非对称加密通常都用于加密对称加密算法的密钥,而不是直接加密内容。
(3) 加密后密文的长度为公钥的长度,例如公钥长度为1024Bit(128Byte),最后生成的密文固定为 1024Bit(128Byte)。算法