#include <iostream>
#include <cstring>
void closekey(char message[]); //加密函数
void openkey(char message[]); //解密函数
int main()
{
unsigned int choose;
char message[100];
std::cout<<"请输入你想进行的操作:1.加密 2.解密\n";
while(std::cin>>choose)
{
if(choose==1)
{
closekey(message);
return 0;
}
else if(choose==2)
{
openkey(message);
return 0;
}
else
{
std::cout<<"大哥,我们这里只能输入1和2,别和我们过不去\n";
std::cout<<"请重新输入你想要进行的操作:1.加密 2.解密\n";
}
}
return 0;
}
void closekey(char message[]) //加密过程
{
char key1[30]="QASWZXDECVFRBNGTHYJUMKIOLP"; //密匙
char key2[30]="plijkomnhutybvfgcxerdwsqza"; //密匙
int er=0; //错误输入截取
int len=0; //限制长度
char error[45];
std::cout<<"输入你想要加密的数据(数据不能超过45位):";
while(len<45)
{
std::cin>>message;
len=strlen(message);
std::cout<<"你输入的加密数据为:"<<message<<"\n";
for(int i=0;i<len;i++)
{
if(message[i]>='A'&&message[i]<='Z')
{
message[i]=key1[message[i]-'A'];
}
else if(message[i]>='a'&&message[i]<='z')
{
message[i]=key2[message[i]-'a'];
}
else if (message[i]>=48&&message[i]<=57)
{
message[i]+=10;
}
else
{
error[er]=message[i];
std::cout<<"你输入的"<<error[er]<<"是不能被加密的,不能保证你的密文正 确\n";
}
}
std::cout<<"你的密文是:"<<message<<"\n\n\n";
std::cout<<"现在你可以继续输入你想要加密的数据:";
}
std::cout<<"你输入的数据大于45位,基于你不守规则,我决定停止运行";
return;
}
void openkey(char message[]) //解密过程
{
int key=0;
char key1[30]="QASWZXDECVFRBNGTHYJUMKIOLP"; //密匙
char key2[30]="plijkomnhutybvfgcxerdwsqza"; //密匙
int er=0; //错误输入的截取
int len=0; //限制长度
char error[45]; //读取错误的函数
std::cout<<"输入你想要解密的数据:";
while(len<45)
{
std::cin>>message;
len=strlen(message);
std::cout<<"你输入的解密数据为:"<<message<<"\n";
for(int i=0;i<len;i++)
{
if(message[i]>='A'&&message[i]<='Z')
{
while(key1[key]!=message[i])
{
++key;
}
message[i]=key+'A';
key=0;
}
else if(message[i]>='a'&&message[i]<='z')
{
while(key2[key]!=message[i])
{
++key;
}
message[i]=key+'a';
key=0;
}
else if (message[i]>=58&&message[i]<=67)
{
message[i]-=10;
}
else
{
error[er]=message[i];
std::cout<<"你输入的"<<error[er]<<"可能是加密时没有加密的东西,不能保 证你的明文正确\n";
}
}
std::cout<<"你的明文是"<<message<<"\n\n\n";
std::cout<<"现在你可以继续你输入的解密数据:";
}
std::cout<<"大兄弟,你输入的数据大于45位,我还是知道你是故意耍我的";
return ;
}
开源地址: 纯文本加密与解密: 纯文本加密与解密