📄
字号:
密码学程序设计--线形移位存储器生成流密码
#include <iostream.h>
#define ok 1
#define error 0
int JudeEqual(int* stream1,int* stream2,int length) //比较两个流是否一致
{
int i;
int temp=0;
for(i=1;i<=length;i++)
{
if(stream1==stream2) temp++;
}
if(temp==length) return ok;
else return error;
}
int PrintStream(int* stream,int length)
{
int i;
for(i=1;i<=length;i++)
cout<<stream<<" ";
cout<<endl;
return ok;
}
int CreateInstream(int* &instream,int &length) //创建线形移位存储器初状态
{
int i;
cout<<"请输入线形移位存储器级数:"<<endl;
cin>>length;
instream=new int[length+1];
cout<<"请输入线形移位存储器初状态:"<<endl;
for(i=1;i<=length;i++)
{
cout<<"第"<<i<<"个位置"<<endl;
cin>>instream;
if( (instream!=1) && (instream!=0))
{
cout<<" 错误的输入!请重新输入!"<<endl;
CreateInstream(instream,length);
}
}
return ok;
}
int CreateKeyStream(int* instream,int* &outstream,int length,int &klength) //创建密码流
{
int i;
int* temp1;
int* temp2;
outstream=new int[2^length];
outstream[1]=instream[length];
temp1=new int [length+1];
temp2=new int [length+1];
temp1[1]=(instream[1]+instream[length])%2;
for(i=2;i<=length;i++)
{
temp1=instream[i-1];
}
while(JudeEqual(instream,temp1,length)!=1)
{
outstream[klength]=temp1[length];
for(i=1;i<=length;i++) temp2=temp1;
temp1[1]=(temp2[1]+temp2[length])%2;
for(i=2;i<=length;i++)
{
temp1=temp2[i-1];
}
klength++;
}
cout<<"test"<<outstream[2];
return ok;
}
void main()
{
int length;
int klength=2;
int* instream; //输入初态
int* outstream; //输出密码流
CreateInstream(instream,length);
CreateKeyStream(instream,outstream,length,klength);
cout<<"得到的密码流为:"<<endl;
PrintStream(outstream,klength-1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -