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

📄 置换密码.cpp

📁 置换密码算法
💻 CPP
字号:
#include<iostream>
using namespace std;
char a[22][6], ch[150],h[22][6],y[22][6],z[22][6],x;
int b[6],k[6],t,j,s=1,i,n=1,d,g,c,e,f;
void mingwen_miwen();
void miwen_mingwen();
void miwen ();
void zhuanhuan(int  );
void main(){
	cout<<"请输入明文,按#号键结束输入"<<endl;
	do{
		i++;
		cin>>ch[i];			
	}while(ch[i]!='#');
	int d=(i-1);
	cout<<"length="<<d<<endl;

	zhuanhuan(d);
	cout<<endl;
    cout<<"请输入加密密匙,注意密匙只能是1到6的数字并且不能重复"<<endl;
    for(t=1;t<=6;t++)
		cin>>b[t];
      mingwen_miwen();
	  cout<<endl;
}
void zhuanhuan(int  t ){
	if(t%6==0){
			for(j=1;s<=t;s++,j++)
		{
				if(j>6){
					j=1;	
					n++;
				}	
				a[n][j]=ch[s];
					
	//	cout<<"a["<<n<<"]["<<j<<"]="<<a[n][j]<<";";
	
			}
			}
	else {
		for(j=1;s<=(t-t%6);s++,j++)
		{
				if(j>6){
					j=1;	
					n++;
				}	
				a[n][j]=ch[s];
          //cout<<"a["<<n<<"]["<<j<<"]="<<a[n][j]<<";";
			}
	n++;
	j=1;
	for( g=(t-t%6)+1 ;g<=t;g++,j++){
	a[n][j]=ch[g];
		//cout<<"a["<<n<<"]["<<j<<"]="<<a[n][j]<<";";
	}
	}
	cout<<endl;
	cout<<"排序后的最终明文如下:"<<endl;
	for(c=1;c<=n;c++){
		for(e=1;e<=6;e++)
			cout<<"\t"<<a[c][e];
       cout<<endl;
	}
	cout<<endl;
}
void mingwen_miwen(){
	//cout<<"n="<<n<<endl;
for(f=1;f<=n;f++)
	{
	for(i=1;i<=6;i++)
	{

         h[f][i]=a[f][i];
	}
	}
	for(f=0;f<=n;f++)
	{
		for(i=1;i<=6;i++)
	{
	    a[f][i]=a[f][b[i]];
        y[f][i]=a[f][i];
	    a[f][i]=h[f][i];
} 	
	}
	miwen();
}
void miwen(){
	cout<<"最终密文如下:"<<endl;
	for(f=1;f<=n;f++)
	{
		for(i=1;i<=6;i++)
	{
		cout<<"\t"<<y[f][i];
	}
		cout<<endl;
	
	}
	cout<<endl;
	cout<<"若要将密文翻译成明文请输入'y',若要退出请输入任意字符"<<endl;
	cin>>x;
	if(x=='y'||x=='Y')miwen_mingwen();
	else exit(1);
}
void miwen_mingwen(){
	int av,ab=1;
	cout<<"请输入加密时设定的密匙:"<<endl;
    for(av=1;av<=6;av++)
	{cin>>k[av];
	
		while(k[av]!=b[av])
		{	
			av=1;
        	if(ab>3)
			{
				cout<<"输入尝试已达最大次数,系统自动关闭"<<endl;
				exit(1);
			}
			cout<<"输入有错,请重新输入"<<endl;
		cin>>k[av];
	        ab++;
			
		}
	}
for(f=1;f<=n;f++)
	{
	for(i=1;i<=6;i++)
	{

         h[f][i]=y[f][i];
	}
	}
	for(f=1;f<=n;f++)
	{
		for(i=1;i<=6;i++)
	{
	   y[f][k[i]]=y[f][i];
        z[f][k[i]]=y[f][k[i]];
        y[f][k[i]]=h[f][k[i]];
} 
		}
	cout<<"原始明文如下:"<<endl;
	for(f=1;f<=n;f++)
	{
		for(i=1;i<=6;i++)
	{
		cout<<"\t"<<z[f][i];
	}
		cout<<endl;
		}
	cout<<endl;
}

⌨️ 快捷键说明

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