⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 5级线性反馈移位积存器模拟.txt

📁 该程序用于实现密码学中的线性反馈移位寄存器的模拟
💻 TXT
字号:
#include<iostream.h>
void fun(int a[5],int b[50] ,int c[5])//异或运算
{    
	int i,j,data;
	for(i=0;i<50;i++)
	{   
		b[i]=a[0];
		data=(c[4]*a[0])^(c[3]*a[1])^(c[2]*a[2])^(c[1]*a[3])^(c[0]*a[4]);
		for(j=0;j<4;j++)
			a[j]=a[j+1];
		a[4]=data;
	}
}

const int n=5;//5维线性反馈移位寄存器
int find(int aa[])//计算周期
{
	int flag=(2<<n-1)-1;//周期上界
	int T=5;//初始化周期(逐步搜索)
	int i;
	for(i=0;i<flag;i++)
	{
		while(aa[i]==aa[i+T]&&i<=flag-T)
		{i++;}
		if(i==flag-T+1) {return T;}
		else {i=0;T++;}
	}
	return 0;
}

void main()
{
	int a[5],b[50],c[5];
	int i,j;
	for(i=4;i>=0;i--)//反馈函数的系数输入为0或1(总是假定C4为1)
	{
		cout<<"Value for c["<<i<<"]=";
	    cin>>c[i];
	}
	for(j=0;j<5;j++)//输入初始状态为0或1的序列
	{
		cout<<"Value for a["<<j<<"]=";
	    cin>>a[j];
	}
	fun(a,b,c);
	cout<<"输出序列为:";
    for(i=0;i<50;i++)
		cout<<b[i];//输出序列
	if(i>=50)
		cout<<"......"<<endl;
	cout<<"周期为:"<<find(b)<<endl;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -