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

📄

📁 密码学程序设计---仿设密码
💻
字号:
密码学程序设计---仿设密码


#include <iostream.h>
#define error 0
#define ok 1




int streaminput(char* &c,int &length)               //明文串输入
{
int i;
cout<<"请输入明文的长度:"<<endl;
cin>>length;
c=new char [length];
    cout<<"请输入明文:"<<endl;
for(i=0;i<length;i++) cin>>c;
    return ok;
}



int streamoutput(char* c,int length)               //密文串输出
{
int i;
for(i=0;i<length;i++) cout<<c;
    cout<<endl;
return ok;
}



int gcd(int x)                               //判断系数是否与26互质
{        
int result=0, i; 
for(i=2;i<=x;i++)
{ 
    if((x%i==0)&&(26%i==0))
    result++;
}
    if(result==0) return ok;
else return error;
}




int EK(char* c1,char* &c2,int length)                //加密函数
{
int a, b, i;
cout<<"请输入加密函数系数A:"<<endl;
cin>>a;
    cout<<"请输入加密函数系数B:"<<endl;
cin>>b;
    if(gcd(a)==1)
{
  c2=new char[length];
     for(i=0;i<length;i++)
  {
      c2=char((a*((int)c1-97)+b)%26+97);     //负数mod 26结果为负数
  }
    return ok;
    }
else return error;
}



int DK(char* c1,char* &c2,int length)               //解密函数
{

int a, b, i=2, Da;
cout<<"请再次输入加密函数系数A:"<<endl;
cin>>a;
    cout<<"请再次输入加密函数系数B:"<<endl;
cin>>b;
    for(i=2;i<26;i++)
{   if((i*a-1)%26==0) Da=i;}              //DK(y)=Da*(y-b)
    
c2=new char[length];
     for(i=0;i<length;i++)
  {
   cout<<"test!!!!!!!!"<<(Da*((int)c1-97-b))%26+97<<endl;
   c2=(char) ((Da*((int)c1-97-b))%26+97);
  }
    return ok;
}




  
  



  void main()
{
       char* c1;
    char* c2;
    char* c3;
    int length;
    cout<<"明文加密:"<<endl;
    streaminput(c1,length);
    EK(c1,c2,length);
       cout<<"加密后的密文:"<<endl;
    streamoutput(c2,length);
       cout<<"密文解密:"<<endl;
    DK(c2,c3,length);
       cout<<"解密后的明文:"<<endl;
    streamoutput(c3,length);



  }

⌨️ 快捷键说明

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