- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
微机随机大素数概率生成和应用.doc
微机随机大素数的概率生成与应用.txt曾经拥有的不要忘记;不能得到的更要珍惜;属于自己的不要放弃;已经失去的留作回忆。公开钥密码体制提出至今已有十多年的历史,由于人们对信息安全的迫切要求和密码学者不懈努力,这一体制已得到广泛的应用,在国内外众多的公开密钥密码方案中研究得比较充分而比较有名的首推美国的RSA。它的安全性是基于大数因子分解在数学上是一个 NP困难的问题,至今没有有效的算法。无疑提高素数的位数将大大提高 RSA的安全性,同时大素数有实际的应用领域。这促使我们对微机随机大素数的概率生成应用软件的研制并提供实用。我们将这一软件取名为386BIP-1。在486微机上运行这个软件,通常可在2--3小时内得到一个概率为 1-(1/4) 的100位的随机概率素数,这对于在微机上实现可用于实际的RSA公钥密码系统,提供了可能。此外,该软件支持WINDOWS和网络。
\Center (一)设计要求与方案
根据实际应用的需要,对386BIP-1的设计要求如下:
(1) 用C(C++)语言编写源程序.
(2) 有好的用户界面,方便的菜单选择.
(3) 从键盘输入所要产生的随机大素数的位数(100位以内,100以上的只需稍加改动源程序中的数组大小即可)后,可自动产生所要求位数的大概率随机大素数,且可进一步进行大概率验证,并输出大概率素数于屏幕,打印机或文件中.
(4) 提供大素数在RSA中的具体应用。
(5) 用于286,386,486微机;易于移植到大型机。
根据对软件的设计要求,本软件的主体由三个部份组成:
(1) 随机大素数的概率生成:在本部份中,从键盘输入所要产生的随机大素数的位数,即可自动随机产生大概率的大素数,并可输出到屏幕,打印机或磁碟文件中。
(2) 大素数概率检验:在本部份中,从键盘或文件输入一个100位以内的大整数,即可自动进行概率检验,一次全部通过是素数的概率为1-(1/4) 。
(3) 大素数在RSA中的应用:本部份中,可从键盘或文件输入所产生的概率大素数,产生RSA加(解)密钥;并提供加(解)密,输出密(明)文于屏幕,打印机或磁盘文件中。
\Center (二)设计分析
(1) 大整数及其四则运算的处理:
386BIA-1软件包可在微机上直接输入输出1000位以内的十进制大整数进行计算; 由于在C语言中,十进制整数的范围仅为 -2 ~ 2 -1(不超出10位),因而首先要解决大整数的表示方法.
我们采取通常的用数组表示大整数的方法 ,因为在具体的程序设计语言(C语言)中考虑到基本运算的运算速度不一致(例如 ,除法比加、减、乘运算慢);同时,要尽可能地避免在程序运行中进行变量类型转换; 我们编程检验过,当使用C语言编程时,如果有字符型同数值型的类型转换,则运算速度要下降十倍以上. 微机大整数运算,文献中已使用了许多方法, 经过反复研究,我们采用以众不同的10000进制方法,即任一整数a都表示为:
a = Σ a[i]*10000 (0≤a[i]≤9999,i∈非负整数);
这样一方面可在微机上直接输入输出1000位以上的十进制大整数,另一方面,加法乘法皆不溢出;既易于表达,亦易于运算.在进行四则运算时,直接运用C语言中的基本运算,完全按一般的逐位对齐的办法进行运算,这来得十分方便简捷,同时,在程序运行中完全避免了变量类型转换,大幅度提高了运算速度.
例如: a,b的十进制位数在800位以内时;为在1000进位制下表达a,b,可将它们写成数组:
Long int a[200],b[200];
int la,lb;
这里的a[i],b[j]是不超过4位的十进制整数, 即0≤a[i],b[j]≤9999; la,lb 分别是a,b在
10000进位制表示下的长,即la= [Log a]+1 ,lb= [Log b]+1 , 0≤i≤la-1, 0≤j≤lb-1; 这样,十进制整数a,b可分别表示为10000进制数:
a= Σ a[i]*(10000), b= Σ b[i]*(10000).
由此可对800位以内的大整数如下作加,减与乘法运算:
a+b= Σ (a[i]+b[i])*(10000) ; a-b= Σ (a[i]-b[i])*(10000) ;
a*b= Σ(Σ(a[i]*b[j])*(10000)
其中的a[i]+b[j]是两个4位的十进制整数相加,结果不超出一个5位的十进制整数,a[i]*b[j]是两个4位的十进制整数相乘,结果不超出一个8位的十进制整数; 因此可以直接使用微机C语言中的四则运算. 计算过程中尚须记录进位,借位; 以加法为例,可使用长整型变量 ssum,sum[i],w及整型变量ls, 其中ssum存放每四位相加的结果,w记录进
您可能关注的文档
最近下载
- (word完整版)10kV配电安装工程施工方案.docx VIP
- 养老院安全突发事件应急预案.docx VIP
- 【沙利文】全球及中国生物试剂市场独立研究报告.pdf
- 计算机软件著作权成果转化合同8篇.docx VIP
- 论刑法中的多次犯罪-法律(法学)专业论文.docx VIP
- 2022浙ST19壁挂式轻便消防水龙及室内消火栓安装.pdf VIP
- 2025年小升初语文总复习:记叙文阅读附答案解析.doc VIP
- 《GB/T 20882.3-2021淀粉糖质量要求 第3部分:结晶果糖、固体果葡糖》.pdf
- 高中物理带电粒子在电场中的运动典型例题解析.docx VIP
- 公司员工在职证明模板.docx VIP
文档评论(0)