网站大量收购独家精品文档,联系QQ:2885784924

密码学实验.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
密码学实验

《密码学与信息安全》 实验报告 《密码学与信息安全》实验一 实验目的: 通过java语言实现简单的线性反馈移位寄存器(LFSR),理解LFSR的工作原理、本原多项式重要意义。 实验内容: (1)编写4级线性反馈移位寄存器LSFR4程序: (2)编写16级线性反馈移位寄存器LFSR16程序。 实验原理: 移位寄存器是流密码产生密钥流的一个主要组成部分。一个n级反馈移位寄存器由n个二元存储器与一个反馈函数f(a1, a2 ,...... , an)组成。每一时刻的状态可用n长序列a1, a2 ,...... , an表示,其中ai是第i级存储器的内容。初始状态由用户确定,当第i个移位时钟脉冲到来时,每一级存储器ai都将其内容向下一级ai-1传递,并根据寄存器此时的状态a1, a2 ,...... , an计算f(a1, a2 ,...... , an),作为下一时刻的an。4级线性反馈移位寄存器的生成函数f=x4+x+1,16级线性反馈移位寄存器的生成函数f=x16+x5+x3+x2+1 其中一个5级的LFSR如图1所示: 图1 实验源码: 4级线性反馈移位寄存器LSFR4程序: 实验结果: 16级线性反馈移位寄存器LSFR4程序: 实验结果: public class LFSR { void LF(int a[],int c[]){//端口 System.out.print(a[0]+ ); for(int i=0;i=60;i++){ int result=0; result=(c[0]*a[3]+c[1]*a[2]+c[2]*a[1]+c[3]*a[0])%2; a[0]=a[1]; a[1]=a[2]; a[2]=a[3]; a[3]=result; System.out.print(a[0]+ ); } } public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.println(请输入a初始状态(4个):);//输入a的初始状态的值 int a[]=new int[4]; int c[]=new int[4]; for(int i=0;i4;i++){ a[i]=input.nextInt(); System.out.print(a[i]+\t); } System.out.println(); System.out.println(请输入c初始状态(4个):);//输入c的初始状态的值 for(int i=0;i4;i++){ c[i]=input.nextInt(); } LFSR t=new LFSR(); t.LF(a, c); } } public class LFSR16 { void LF(int a[],int c[]){//端口 System.out.print(a[0]+ ); for(int i=0;i=60;i++){ int result=0; result=(c[1]*a[14]+c[2]*a[13]+c[4]*a[11]+c[15]*a[0])%2; for(int j=0;j16;j++){ if(j!=15){ a[j]=a[j+1]; }else a[15]=result; } System.out.print(a[0]+ ); } } public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.println(请输入a初始状态(16个):);//输入a的初始状态的值 int a[]=new int[16]; int c[]=new int[16]; for(int i=0;i16;i++){ a[i]=input.nextInt(); System.out.print(a[i]+\t); } System.out.println(); System.out.println(请输入c初始状态(16个):);//输入c的初始状态的值 for(int i=0;i16;i++){ c[i]=inpu

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档