编程实现该线性反馈移位寄存器,并求出其输出序列。
【核心代码如下】
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产生一个密钥流,并使用一定规则对明文串进行加密
本文仅供参考和学习!
欢迎感兴趣的伙伴们一起交流!