📄 zhihuan.cpp
字号:
#include "iostream.h"
int main()
{
void encrupt(char *,int *,int);
void decrupt(char *,int *,int);
cout<<"置换密码演示"<<endl;
int n,p;
cout<<"输入密钥长度:";
cin>>n;
int *key=new int[n];
cout<<"输入密钥:";
for(int i=0;i<n;i++)
cin>>key[i];
int *keyni=new int[n];
for(i=0;i<n;i++)
keyni[key[i]-1]=i+1;
while(true)
{
cout<<"如果加密,输入1;如果解密,输入2;否则输入其它数:";
cin>>p;
if(p!=1 && p!=2)
return 0;
char message[50];
if(p==1)
cout<<"输入明文:";
else cout<<"输入密文:";
cin>>message;
for(i=0;message[i]!=0;i++);
while(i%n!=0)
message[i++]='?';
message[i]=0;
if(p==1)
encrupt(message,key,n);
else
decrupt(message,keyni,n);
}
delete []key;
delete []keyni;
return 0;
}
void encrupt(char *message,int *key,int n)
{
char transmit[50],k;
int j=0;
for(int i=0;message[i]!=0;i++)
{
k=message[key[i%n]-1+i/n*n];
if(k=='?') continue;
else transmit[j++]=k;
}
transmit[j]=0;
cout<<"密文为: "<<transmit<<endl;
}
void decrupt(char *message,int *keyni,int n)
{
char transmit[50],k;
int j=0;
for(int i=0;message[i]!=0;i++)
{
k=message[keyni[i%n]-1+i/n*n];
if(k=='?') continue;
else transmit[j++]=k;
}
transmit[j]=0;
cout<<"明文为: "<<transmit<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -