置换密码

  • 格式:doc
  • 大小:36.50 KB
  • 文档页数:5

#include
#include
using namespace std;
void jiami()
{
char str[100];
char str1[100];
char a[100];
cout<<"请输入密钥:"<cin.get();//每次在重新输入前必须加这个!
cin.get(str,100);
cout<<"请输入您的明文:"<cin.get();
cin.get(a,100);
int len=strlen(str);
char b[100][100];
char c[100][100];
char d[100][100];
int j=0;
int t=0;
int j1;
int t1;
for(int i=0;a[i]!='\0';i++)
{
if(a[i]!=' '){
b[j][t]=a[i];
c[j][t]=a[i];

t++;
if(t>=len)
{
t=0;
j++;
}
j1=j;
t1=t;
}
else{};
}
strcpy(str1,str);
for(int m=0;m{
for(int j=0;j{
if(str1[j]>str1[j+1])
{
char ch=str1[j];
str1[j]=str1[j+1];
str1[j+1]=ch;
}
}
}
for(int n=0;n{
for(int j=0;j{
if(str[n]==str1[j])
{
for(int x=0;x{
c[x][n]=b[x][j];
}
}
}
}
for(int p=0;p{
strcpy(d[p],c[p]);
}
for(int w=0;w{
for(int j=0;j{
if(str[w]==str1[j])
{
for(int x=0;x{
d[x][w]=c[x][j];
}
}
}
}
cout<<"经置换算法后的密文为:"<for(int i4=0;i4{
for(int j=0;jcout<}
}
void jiemi()

{
char str[100];
char str1[100];
char a[100];
cout<<"请输入您的密钥:"<cin.get();
cin.get(str,100);
cout<<"请输入您的密文:"<cin.get();
cin.get(a,100);
int len=strlen(str);
int len1=strlen(a);
int le=len1/len;
char b[100][100];
char c[100][100];
char d[100][100];
int j=0;
int t=0;
for(int i=0;a[i]!='\0';i++)
{
if(a[i]!=' '){
b[j][t]=a[i];
c[j][t]=a[i];
j++;
if(j>=le)
{
j=0;
t++;
}
}
else{};
}
strcpy(str1,str);
for(int y=0;y{
for(int j=0;j{
if(str1[j]>str1[j+1])
{
char ch=str1[j];
str1[j]=str1[j+1];
str1[j+1]=ch;
}
}
}
for(int z=0;z{
for(int j=0;j{
if(str[z]==str1[j])
{
for(int x=0;x{
c[x][z]=b[x][j];
}
}
}
}
for(int i1=0;i1{
strcpy(d[i1],c[i1]);
}
for(int i2=0;i2{
for(int j=0;j{
if(str[i2]==str1[j])
{
for(int x=0;x{
d[x][i2]=c[x][j];
}
}
}
}
cout<<"解密后的明文为:"<for(int i3=0;i3{
for(int j=0;jcout<}
}
int main()
{
int choice;
cout<<"请输入您的选择:"<cout<<"1.加密 2.解密;"<cin>>choice;
switch (choice)
{
case 1:
jiami();
break;
case 2:
jiemi();
break;
default:
break;
}
return 0;
}