zntsbkhhhhhh

RSA算法密钥长度的选择

0
阅读(125) 评论(10)

                                                                 RSA算法密钥长度的选择

 RSA算法密钥长度的选取直接关系到加解密、签名验签的安全强度和运算速度。密钥的长度实际上是指公钥模N的长度(以Bit为单位),理论上来讲N越大,安全强度越高,算法运算速度越慢。因此,RSA算法密钥长度要结合项目的实际情况来选取,以求在安全性和运算性能之间取得平衡点。例如:有些产品的应用场景要求RSA加解密必须具有很高的实时性,比依托于强大CPU性能,不需要过多考虑RSA运算速度,还有些终端产品如公交刷卡机。如果RSA运算时间过长会导致刷卡交易整体时间延长,用户刷卡体验变差,上下车客流速度变慢,因此这种应用场景不适合选取过高的公钥模长。有些PC端产品,虽然MCU运算性能偏弱,但是增加了一颗带有协处理器的加密芯片来协助MCU完成运算,这样就能很好的实现运算加速,因此不需要过多担心速度问题,可以选取较高的公钥模长来提升系统安全强度。总体来说,现在市场上RSA公钥长度应用较多的是1024位和2048位,简称RSA1204算法和RSA2048算法。

 

RSA几个特性如下:

(1)密钥长度增长一倍,公钥操作所需时间增加约4倍,私钥操作所需时间增加约8倍,公私钥生成时间约增长16倍。

(2) 一次能加密的密文长度与公钥长度成正比,如RSA1024,一次能加密的内容长度为 1024/8  = 128byte(包含填充字节)。所以非对称加密一般都用于加密对称加密算法的密钥,而不是直接加密内容。

(3) 加密后密文的长度为公钥的长度,例如公钥长度为1024Bit(128Byte),最后生成的密文固定为 1024Bit(128Byte)。

 

 


  1. 其实跟用法有关,一般都是用RSA进行握手传递密钥使用,所以位数确实要选高点。但如果做数据流加密,那肯定不能选太高,RSA4096的话,估计你都跑不起来

  2. 现在都4096了、1024都比较少了

  3. 各有所长,前者是非对称加密,是业内普遍使用的,加密效率较后者低,可能会被破,虽然在成本的限制下可行性不高。AES256是用于取代3DES的,破解的相对少些。

  4. RSA 1024和AES 256,这两种加密算法哪种更安全


  5. 不同行业中如何选择1024和2048呢?比如我是想做个产品中的数据加密,能否用到RSA这种呢?


  6. RSA的公钥模长和运算速度为反比关系,在一定的前提下,公钥越长,安全强度越高,运算速度越慢,利弊可根据实际情况选取


  7. 是不是RSA长度越长越好?越安全呢?


  8. 这样用带有协处理器的加密芯片运算RSA,提升安全强度还实现运算加速,倒是一个不错的方案

  9. 楼主的文章对于我这这种小白来说通俗易懂,涨知识了


  10. 学习了,RSA的加密速度还得依托于CPU的性能,如果性能好,密钥长度就可以选择位数多一些的。