随机过程实验报告_动态伪随机序列加密

随机过程实验报告_动态伪随机序列加密

ID:15015447

大小:258.30 KB

页数:8页

时间:2018-07-31

随机过程实验报告_动态伪随机序列加密_第1页
随机过程实验报告_动态伪随机序列加密_第2页
随机过程实验报告_动态伪随机序列加密_第3页
随机过程实验报告_动态伪随机序列加密_第4页
随机过程实验报告_动态伪随机序列加密_第5页
资源描述:

《随机过程实验报告_动态伪随机序列加密》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、HUNANUNIVERSITY伪随机序列加密解密报告学生姓名学号专业班级指导老师1.实验原理及实验目标动态伪随机序列的加密算法,设用户密码序列为Ui(i=1,2,…,k),先将用户密码加长(要求大于被加密文件的长度),得到初始加密密钥Ri(i=1,2,…,m),它相当于一次性密码薄加密中的密码薄。为了减少用户密码的重复性,在组成初始加密密钥时选择一定的算法对用户密码进行处理,使密钥Ri序列不具某种规律性,这种算法要求正向运算容易,而反向运算几乎无法实现。改进后的动态伪随机序列加密法具体做法如下:(1)首先由用户输入密钥(口令),口令长度

2、理论上无上限限制。下面程序人为限制长度的下界长为8个字符,输入的口令先存放在11DAT中。(2)11DAT的内容复制到临时的文件TEMP1DAT中去。(3)对TEMP1DAT的内容进行两种移位处理,例如输入的口令为“1234567890”则TEMP1DAT移位前用二进制表示见下表每个字节的相同位,循环左移n位,n是由密码钥前3字节相同位所组成的数(可以取更多或更少个字节),例表1中第4位n=(111)2=7,则各位左移后(此时左右方向和表格相同)得如下结果再对各字节做循环左移m位:m是各字节低三位所组成的数(可以取得更多或更少位),例如

3、第0字节m=(010)2=2,全部左移(字节的低位向高位移位)后得表3:(4)表移位处理后的TEMP1DAT数据添加到11DAT的尾部。(5)若11DAT的长度大于或等于被加密文件的长度,则密码薄11DAT形成完毕,转(6),否则重复步骤(2)、(3)、(4)、(5)。(6)用所形成的密码薄对明文加密(或解密),加密时从被加密文件和密码薄文件中各取一个字节进行位异或运算,结果做为密文的内容,解密时再做一次异或运算即可。最后所形成的密码薄中,最前面的若干字节就是原始口令,越靠文件末尾的字节通过运算的次数越多。为了防止被已知明文破译法破译,

4、密码薄从文件尾部向文件头部取数据。因为从文件头开始取数据,头几个原始密码就有可能去加密某个具有固定格式的文件头(如电子邮件、word文档、图象文档的文件头),这样密码就很容易被破译。有了密码就容易产生密码薄,而从文件尾向前取数据,则很难破解。而且原始密码常常最终用不到,因为密码薄的长度为口令长×2i(i=0,1,2……,),大部分情况是超过被加密文件的长度。由上述步骤可见密码簿的生成不仅与密钥串中多位密码相关,还与加密过程相关,因而各密钥位间存在着很强的相关性。从理论上很容易分析出上述变换是单向的,即只能由用户密码推算出实际加密密钥。不

5、可能由实际密码簿反向推出用户密码。由此产生了一串永不重复且难以推算出后序密码钥的密钥序列流。1.实验设计代码:#include#include#include#include#include#includevoidmoveLeft()//字节间同位循环左移函数{FILE*fp;inthandle,m;longl,i,j;charch,ch1;unsignedsave[8],m1,m2;fp=fopen("temp.dat","r

6、+");handle=fileno(fp);l=filelength(handle);//确定文件长度for(i=0;i<8;i++){fseek(fp,i,0);save[i]=fgetc(fp);}for(i=0;i<8;){m1=pow(2,i);m2=255-m1;intm3=save[0]&m1>>j;intm4=((save[1]&m1)<>j)<<2;m=m3+m4+m5;for(j=0;i

7、m<=l-1){fseek(fp,i+m,0);ch1=fgetc(fp);}elsech1=save[(i+m)-1];ch1=ch1&m1;ch=(ch&m2)

8、m1;fseek(fp,i,0);fputc(ch,fp);}}fclose(fp);}voidmove2()//字节内循环左移{FILE*fp;inthandle;longl,i;intj;charch,ch1,ch2;fp=fopen("temp.dat","r+");handle=fileno(fp);l=filelength(handle);for(i=0;i

9、i++){fseek(fp,i,0);ch=fgetc(fp);j=ch&7;ch1=ch<>(8-j);ch=ch1+ch2;fseek(fp,i,0);fputc(ch,fp);}f

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

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

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