RSA key长度与加解密时间(耗时)关系

这两天在用openssl库,讨论到RSA、DES效率问题。结论是显而易见的,RSA肯定慢很多。但是慢多少,key长度与加解密所需时间又有怎样的关系呢?加密一般要多长时间呢?相信很多人和我一样困惑,就是rsa key长度与加密、解密需要时间有没有一个大概的关系,而且能在日常编程中能指导应用。

用baidu翻烂了,也没有找到想要的结果。用google中文搜索了下,还是没有想要的结果。那就转换下,用英文搜索”rsa encryption time”,终于得到想要的结果(看来国内的基础研究真的和国外差距很大)。挑着看了前面几篇,总结如下:

1. 关注rsa的加密时间不如关注rsa解密时间,原因如下:

a. 解密时间比加密时间更耗时;

b. 服务器端解密用得最多;

2.国外研究的一个结论:rsa key长度变2倍(double),相应的解密时间会增加6-7倍。

3. 这里给出rsa key长度和解密时间的大概关系:2G 主频奔腾CPU,1024的key长度解密只需25ms(其实挺快哈,应用上应该可以接受的),2048不到200ms,但是4096时超过1s。显然,对比较老的机器来说,这是不可接受的。

4.推荐key长度对应的生命周期如下:

1024 2010年后不要再用;

2048 2030年后不要再用;

3072 2031年后仍可使用…  8)

最后列出所查看的几篇重点英文文章链接,请参考:

1. http://www.javamex.com/tutorials/cryptography/rsa_key_length.shtml

2.http://security.stackexchange.com/questions/1833/encryption-decryption-time

3.http://www.digicert.com/TimeTravel/math.htm