📄 置换密码.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 + -