实验 2:流密码(认识 LFSR 及流密码)
实验目的:通过实现简单的线性反馈移位寄存器(LFSR),理解 LFSR 的工作原
理、本原多项式重要意义。
实验内容:1)利用 C\C++语言实现 LFSR(其中 LFSR 已给定);2)通过不同初
始状态生成相应的序列,并观察他们的周期有什么特点;3)利用生成的序列对
文本进行加/解密(按对应位作模 2 加运算)。
其中的 LFSR 为:
实验环境:Window xp
VC++2008
实验结果及分析:
C 语言实现程序如下:
#include
#include
#define Max 5
void main(){
int order[5];
int fn_feedback(int a[5]);
int i;
printf("请输入五个整数,用逗号格开:\n");
for(i=0;i<5;i++)
scanf("%d",&order[i]);
//从文件中读出
FILE *in,*out;
if((in=fopen("a1.txt","r"))==NULL){
printf("cannot open file\n");
exit(0);
}
if((out=fopen("a3.txt","w"))==NULL){
printf("cannot open file\n");
exit(0);
}
char data;
int sum,p;
data=fgetc(in);
while(data!=EOF){
sum=0;
for(i=0;i<8;i++){
if((data<
for(i=0;i<4;i++)
a[i]=a[i+1];
a[4]=k^a[2];
return k;
}
运行程序:
打开文件 a3.txt :
更改程序:
if((in=fopen("a3.txt","r"))==NULL){
printf("cannot open file\n");
exit(0);
}
if((out=fopen("a2.txt","w"))==NULL){
printf("cannot open file\n");
exit(0);
}
再次运行相同程序,输入相同数据,得文件 a2.txt: