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

📄

📁 线形移位存储器生成流密码
💻
字号:
 密码学程序设计--线形移位存储器生成流密码


#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 + -