由RSA引出的问题。(欢迎讨论)
起因:密码学老师让写一个RSA实现的算法.
经过:以前我就写过了,这次,我想写的高深些,使用最好的办法.
技术上的问题:
1.大数存储:
这样应该没有争论的,大家使用的都是32位整数数组,以2^32为进位制.存储方式是由低到高的存储.就是0x aaaaaaaa ffffffff bbbbbbbb 在数组int a[]中表示为:a[0]=0xbbbbbbbb;a[1]=0xffffffff;a[2]=0xbbbbbbbb.
2.加法和减法使用汇编最快了,这个也没有问题.
3.rsa中的各种算法短时间里面也没有办法改进了。这些都不管他们了.
4.有改进的地方只有乘法和除法的实现了。!!!!!!
下面要和大家讨论的就是乘法和除法的快速计算的问题.
乘法:
通用的算法有3个.
一:传统乘法。对少于32*40位比较有效.
二:Karatsuba乘法。对于少于32*600位比较有效。
三:FFT乘法。100万位的时候,没有算法比它快。