- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
最近下载
- IEC 61730-1 2023 必威体育精装版版中文标准.doc
- 论融资管理中存在问题与对策以格力电器为例_.docx
- 配置管理程序(ISO20000-1:2018).docx VIP
- 德国柏曼年品牌策划.ppt
- 《内科护理》4第四节 糖尿病病人的护理 教学课件.ppt VIP
- 云南白药股份有限公司财务报表分析.doc VIP
- APPROACHES AND METHODS IN LANGUAGE TEACHING教师专业发展.pdf
- 生鲜农产品冷链物流配送中心选址研究——以西安市为例.docx
- 陕西专升本英语3500词汇与高频词组.pdf VIP
- 2025年海南省公务员省考《行测》真题(含答案).pdf VIP
文档评论(0)