大整数算术的实现开题报告
2021-12-29 21:40:46
全文总字数:3858字
1. 研究目的与意义及国内外研究现状
大整数在很多领域都有重要的应用价值。例如在密码学方面,整数运算的长度和速度对密码运算来说至关重要,因而它对大整数运算精确度也同样有很高的要求。在数学验证方面,如果仅仅靠手工计算和借助计算机完成数学中大整数的运算验证工作,几乎是无法实现的。前者在时间来说几乎是不可能的,后者又由于传统编程方法的精确度远远达不到要求,也无法完成任务。而直到有了大整数运算程序,这些工作才能得以进行。在微观模拟方面(如基因工程、生物信息、数量遗传),可以通过数字化模拟微观世界中许多对象的活动,而且通过大整数的运算也可以非常方便的表示其活动变化。大整数还有一个最为重要的作用,就是可以保证数据存储的安全,由于它自身的定义和特性使得它构成的数据信息很难被截获,安全性也就大大提升了。例如,在rsa公钥体制下,主要使用三种长度的密钥,在平时生活中使用是521位的;如果是是商业中有需要的话一般会选择1024位的;如果是军事方面中使用则推荐2048位,安全性更好。拿商业中使用的密钥长度为例,存储它需要1kb的内存空间,密钥需要的空间为-1,相比于基本整数类型最大仅能表示-1 的32位系统来说,不能被完全表示。如果不能保证运算的正常进行,整个系统会因为数的溢出而崩溃失效。因此,选择合适的数据结构和有效的算法十分的重要。国内外研究现状
由于大整数的定义就是指超出计当前程序整数类型范围的整数,所以很难用通用编程语言所完成的程序来处理它,即使是microsoft自带的cpu数据宽度为32的“运算器”,也不能完全解决它的所有问题,所以大整数运算的实现与开发十分必要。
在之前因为大整数处理系统主要用于高尖新技术领域而且十分的复杂,所以只有在一些国家级的计算中心、安全中心才能开展系统化的研究和开发工作。但是随着科学技术的快速发展,pc的处理能力得到大大的加强,并且大整数应用领域的也在日益扩大,成为许多高新技术开发的基石,发展前景一片大好,使得越来越多的科研人员开始投身于这项工作。
pope 和stein在1960 年提出了通过运用乘法和除法来代替模乘计算的思想,21年后 knuth在他们思想的引导下,通过不断地实验具体给出了一种估商型模乘算法。之后在1983年,blakley 加以改进,提出可以通过一系列加法来代替模乘的加法型模乘算法。之后人们在他思想的基础上相继提出了窗口模乘算法和滑动窗口模乘算法还有一些改进方法,成功的的减少所要使用的加法的次数,取得了比较理想的效果。在1985年,montgomery另辟蹊径提出一种将普通的模乘转化为更加易于计算的特殊模乘的改进算法,在经过人们的不断改进后,同样得到了非常广泛的实际应用。
2. 研究的基本内容
本程序是在windows 32位系统上完成的。首先先建立大整数运算程序的基础框架并当部分辅助函数已经成功实现后,再将新完成的部分程序加进去。这种模块化的思想使得每当完成一部分程序后,都可以将它加入大整数运算程序基础框架中然后立马见到成效和错误,方便自己的改正和优化,这样就避免了直到整体完成后才发现不明原因错误的烦恼。microsoft visual c 6.0是本程序完成制作并进行调试的主要操作工具,在程序中力求达到足够高效率的基本运算。其次为了使本程序具备可移植性和稳定性,创建了简单明了的函数接口。清晰易懂的代码,友好的用户界面,显示计算所花费的时间和对于异常的表达式会提示出错,这些同样都是本程序所要完成的。
大整数算术的实现最重要的是数据结构的应用,本文拟采用数组存储的方法。首先将大整数每个数位的数值按顺序存在数组中,然后当运算的时候调用两个数组中的元素两两进行运算得到最终的结果,最后再将数组中的数值存入输出变量中。优点:直观方便理解方便随机访问,速度也很快.研究大整数加法和减法的实现,这两种运算的关键是在处理好进位和退位的问题,而且主要注意避免数据太大造成溢出。
研究大整数乘法的实现,需要注意中间变量的使用,将中间变量中的数值相加要考虑移位,好错位相加,最后处理好进位和溢出的问题。
3. 实施方案、进度安排及预期效果
4. 参考文献
[1]宋震.密码学[m].北京:中国水利水电出版社. 2002:87-151.
[2]汤唯,密码学与网络安全技术基础[m].北京:机械工业出版社,2004.
[3]郑莉,董渊,c 语言设计[m].北京清华大学出版社,2001.