湖北质量安全监督总站:怎样实现大数快速模运算?

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/07 03:31:16
比如一个1024位的大和数模一个512位的大素树。
问题的关键不是要结果,而是要“速度快”,具有实际的可行性,能够运用软件或者硬件方便实现。有没有密码学的专家给我一些建议,或者一些相关的资料呀?谢谢各位了!!!!!

大多数的编译器只能支持到64位的整数运算,即我们在运算中
所使用的整数必须小于等于64位,即:0xffffffffffffffff
也就是18446744073709551615,这远远达不到RSA的需要,于是
需要专门建立大数运算库来解决这一问题。

最简单的办法是将大数当作字符串进行处理,也就是将大数用
10进制字符数组进行表示,然后模拟人们手工进行“竖式计算”
的过程编写其加减乘除函数。但是这样做效率很低,因为1024
位的大数其10进制数字个数就有数百个,对于任何一种运算,
都需要在两个有数百个元素的数组空间上做多重循环,还需要
许多额外的空间存放计算的进位退位标志及中间结果。当然其
优点是算法符合人们的日常习惯,易于理解。

另一种思路是将大数当作一个二进制流进行处理,使用各种移
位和逻辑操作来进行加减乘除运算,但是这样做代码设计非常
复杂,可读性很低,难以理解也难以调试。

内存9999999999999999999999G,CPU9999999999999999999999999999999999999999999999GHZ,
就可以了```~

搞过数据结构的人应该知道。大数运算有独特的方法的。。。呵呵。
大数,弄成字符串形式的。然后用数组,把这个数分为N段。都存到数组里,再被运算的数也这样放到数组里。再逐个进行运算。
当然,运算也是有很多技巧的。
比如。相加。加了以后,有进位。就要划上去。。。。
你说的大数模运算。呵呵。有点麻烦了。不过原理是一样的。以前我也写过类似的。C800一样,算起来快得很。。。