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

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

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
隨机过程实验报告_动态伪随机序列加密

HUNAN UNIVERSITY伪随机序列加密解密报告学生姓名学号专业班级指导老师实验原理及实验目标动态伪随机序列的加密算法,设用户密码序列为Ui (i = 1 ,2 , …,k) ,先将用户密码加长 ( 要求大于被加密文件的长度),得到初始加密密钥Ri(i = 1 ,2 , …,m) ,它相当于一次性密码薄加密中的密码薄。为了减少用户密码的重复性 ,在组成初始加密密钥时选择一定的算法对用户密码进行处理 , 使密钥 Ri 序列不具某种规律性 ,这种算法要求正向运算容易 ,而反向运算几乎无法实现。改进后的动态伪随机序列加密法具体做法如下:( 1) 首先由用户输入密钥 ( 口令) ,口令长度理论上无上限限制。下面程序人为限制长度的下界长为 8 个字符 ,输入的口令先存放在 11DA T 中。( 2) 11DA T 的内容复制到临时的文件 TEMP1DA T 中去。( 3) 对TEMP1DAT 的内容进行两种移位处理,例如输入的口令为“1234567890 ”则TEMP1DAT移位前用二进制表示见下表每个字节的相同位 ,循环左移 n 位 ,n 是由密码钥前 3 字节相同位所组成的数 ( 可以取更多或更少个字节) ,例表 1 中第 4 位 n = ( 111)2 = 7 ,则各位左移后 ( 此时左右方向和表格相同)得如下结果再对各字节做循环左移 m 位 :m 是各字节低三位所组成的数 ( 可以取得更多或更少位) , 例如第 0 字节 m = ( 010)2 = 2 ,全部左移 ( 字节的低位向高位移位) 后得表 3 :(4) 表移位处理后的 TEMP1DA T 数据添加到 11DA T 的尾部。(5) 若 11DA T 的长度大于或等于被加密文件的长度 ,则密码薄 11DA T 形成完毕 ,转 (6) ,否则重复步骤(2)、(3)、(4) 、(5)。(6) 用所形成的密码薄对明文加密(或解密) ,加密时从被加密文件和密码薄文件中各取一个字节进行位异或运算 ,结果做为密文的内容 ,解密时再做一次异或运算即可。最后所形成的密码薄中 ,最前面的若干字节就是原始口令 ,越靠文件末尾的字节通过运算的次数越多。为了防止被已知明文破译法破译 ,密码薄从文件尾部向文件头部取数据。因为从文件头开始取数据 ,头几个原始密码就有可能去加密某个具有固定格式的文件头 ( 如电子邮件、 word 文档、图象文档的文件头) ,这样密码就很容易被破译。有了密码就容易产生密码薄 ,而从文件尾向前取数据 ,则很难破解。而且原始密码常常最终用不到 ,因为密码薄的长度为口令长 × 2i( i = 0 ,1 ,2 ……,) ,大部分情况是超过被加密文件的长度。由上述步骤可见密码簿的生成不仅与密钥串中多位密码相关 ,还与加密过程相关 ,因而各密钥位间存在着很强的相关性。从理论上很容易分析出上述变换是单向的 ,即只能由用户密码推算出实际加密密钥。不可能由实际密码簿反向推出用户密码。由此产生了一串永不重复且难以推算出后序密码钥的密钥序列流。实验设计代码:#includeprocess.h#includeconio.h#includeio.h#includeiostream#includefstream.h#includemath.hvoid moveLeft() //字节间同位循环左移函数{FILE* fp;inthandle,m;long l,i,j;char ch,ch1;unsigned save[8],m1,m2;fp=fopen(temp.dat,r+);handle=fileno(fp);l=filelength(handle); //确定文件长度for (i=0;i8;i++){fseek(fp,i,0);save[i]=fgetc(fp);}for(i=0;i8;){m1=pow(2,i);m2=255-m1;int m3=save[0]m1j;int m4=((save[1]m1)j)1;int m5=((save[2]m1)j)2;m=m3+m4+m5;for(j=0;il;i++){fseek(fp,i,0);ch=fgetc(fp);if(i+m=l-1){fseek(fp,i+m,0);ch1=fgetc(fp);}else ch1=save[(i+m)-1];ch1=ch1 m1;ch=(chm2)|m1;fseek(fp,i,0);fputc(ch,fp);}}fclose(fp);}void move2() //字节内循环左移{FILE *fp;int handle;long l,i;int j;char ch,ch1,ch2;fp=fopen(temp.dat,r+);handle=fileno(fp);l=filelength(handle);f

文档评论(0)

sd47f8cI + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档