2021-10-28 流密码实验

 编程实现该线性反馈移位寄存器,并求出其输出序列。

【核心代码如下】

int a[6] = {1,0,0,1,1,0};	//初始序列,a[5]作为中间值 
for(int j=0; j<31; j++)		//5级线性反馈移位寄存器的最大周期为31
{ 
	cout<<a[0];
	a[5] = a[3]^a[0];		//a[3]与a[0]异或
	for(int k=0; k<N; k++)	//移位 
	    a[k] = a[k+1];
}

【完整代码如下】

#include<iostream>
#define N 6				        //初始序列数
using namespace std;

void feedback(int n,int a[])
{//反馈函数 
	int T=1;
	for(int i=0; i<n; i++)
		T = 2*T;
	for(int j=0; j<T-1; j++)	//周期为T-1	
	{ 
		cout<<a[0];
		a[N-1] = a[3]^a[0];
		for(int k=0; k<N; k++)
			a[k] = a[k+1];
	}
	cout<<endl<<"周期为:"<<T-1<<endl;
} 

int main()
{
	int n;		                //级数 
	int a[N];	                //初始序列 
	cout<<"请输入级数:"<<endl;
	cin>>n;
	cout<<"请输入初始序列:"<<endl; 
	for(int i=0; i<N-1; i++)
		cin>>a[i];
	cout<<"输出序列为:"<<endl;  
	feedback(n,a);
	cout<<endl;
	return 0;
}

总结:

(1)n级线性反馈移位寄存器的最大周期为2的n次方减1

 (2)流密码的基本思想是利用密钥k产生一个密钥流,并使用一定规则对明文串进行加密

本文仅供参考和学习!

欢迎感兴趣的伙伴们一起交流!

猜你喜欢

转载自blog.csdn.net/m0_58489132/article/details/121025197
今日推荐