密码学课程报告笔记new

密码学课程报告笔记new

ID:18766847

大小:62.50 KB

页数:5页

时间:2018-09-22

密码学课程报告笔记new_第1页
密码学课程报告笔记new_第2页
密码学课程报告笔记new_第3页
密码学课程报告笔记new_第4页
密码学课程报告笔记new_第5页
资源描述:

《密码学课程报告笔记new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、密码学课程报告卢学东(学号:010182025,导师:张治国)1.概述本程序是一个对RSA加密和解密方法的演示程序,它的界面如下:公钥和密钥可以自己键入,也可以按“自动产生”由程序随机产生两个100个十进制位的素数。下面最左方的文本框里的是要加密的文本,它也可以由文本文件输入。按“加密>>”按钮将对输入的文本进行加密,而且结果用十六进制的32位整数串给出。按“解密>>”将对加密结果进行解密,结果放在最右边的文本框里。RSA加解密的关键算法是大整数运算、模幂算法、素数产生和判断、模m逆元的求法、以及RSA本身的加解密算法。下面将一一详述。2.大整数的基本算法由于想使用现有

2、的CPU的32乘法指令,所以用原码表示一个大整数,且存放在一个32位整数为单位的数组里,用一个类成员lliLength(lliLength≥1)表示数组的长度。另外在类中加了一个成员sign,表示大整数的符号。为了提高运算速度,关键算法例如加减乘除和从一个十进制字符串转换成大整数的算法全部用了汇编语言实现。加法很简单,只用了带进位的加法指令adc,因为最低一个双字相加时用clc指令把进位清零。减法只用了带借位的减法指令sbb,因为最低一个双字相减时用clc指令把借位清零。乘法的算法如下:假设两个大整数M1和M2相乘,M1的长度为n1个32位整数,表示为m1n1-1m1n

3、1-2…m10,M2的长度为n2个32位整数,表示为m2n2-1m2n2-2…m20,则相乘时首先把一个大小为n1+n2的缓冲区清零,然后计算Pj=(0≤i≤n2-1),把Pj加到缓冲区的从第j个双字开始的临时结果中。除法就比较麻烦,是按照移位和相减的方法进行,具体步骤如下:1)如果被除数小于除数,返回0。2)假设被除数有D1个双字,除数有D2个双字。比较被除数和除数的前D2个双字,如果小于,在被除数前补上一个为0的32位整数;否则,在被除数前补上两个为0的32位整数。3)令商等于0。1)计算要移位的二进制位的总数为(D1+4-D2)×8(被除数前补32位整数)或者(D

4、1+8-D2)×8(被除数前补64位整数)。2)计算被除数和除数的最高的双字的二进制的0的个数(从高位算起,直到遇到第一个不是0的二进制位),且分别命名为dividendLeadingZeros和divisorLeadingZeros。商和被除数左移max(1,dividendLeadingZeros–divisorLeadingZeros)3)比较除数和被除数的前D2个双字,如果大于,商的最低位置0;否则置1,且被除数的前D2个双字减去除数,放回原缓冲区。4)转5,直到被除数左移的位数等于4)中算出的移位总数。2.随机数序列的产生Shannon证明了一次一密密码体制是

5、不可破的,这一结果给密码学研究以很大的刺激。若能以一种方式产生一随机序列,这一序列由密钥所决定,则利用这一序列就可进行加密。随机数序列在RSA算法中也占据了非常重要的位置,尤其在素数查找和测试时。无论是用Jacobi概率测试法还是Miller-Rabin概率测试法,均需要一个从1到n的随机数序列,而且这些随机数要求是等概率产生的。这在计算机系统里几乎是不可能的。在产生素数时,本程序使用的是这样的一个方法:产生一个十进制数字的字符串,这个字符串中的每一个字符均“随机”从字符‘0’到字符‘9’。具体做法是用指令rdtsc读取从80386开始就有的一个时钟计数寄存器。但即使是

6、这样,在这个线程执行的若干毫秒内,产生的序列会非常有规律。故对从第二个开始产生的字符始,让它和上一个产生的进行异或运算。这样看上去就大大提高了随机程度。它的代码如下:while(a0)number=number^(strDec[a-1]-'0');if(number>9)number=number-6;if(a==0&&number==0)number=5;strDec[a]=number+'0';a++;}在素数测试

7、时,用rdtsc先获取一个“随机”的32位整数,然后用这个整数和要测试的大整数的每一双字进行异或,再根据数的范围进行处理。它的代码如下:__asm;//取得32位“随机”数{rdtscmovebx,eaxxorbh,almovdh,bhrorebx,8xorbh,dhrorebx,8xorbh,dhrorebx,16movrandomInt,ebx}b=*this;unsignedint*pbLLI=b.pLLI;__asm{moveax,thismovecx,[eax][lliLength]movedi,pbLLImovedx,rand

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。