单表代换密码加密与解密

#include <iostream>
#include <string>
void encrypted_process(const char * resource,char * security,int length);
void open_process(const char * security,char * open,int length);
char encrypted_query_table(char IP);
char open_query_table(char IP);
using namespace std;

int main()
{
char resource_text[100];
char security_text[100];
char open_text[100];

cout<<"请在下行中输入明文,最大字符为100个:"<<endl;
cout<<"输入注意事项:只能输入英文字母、汉字及空格等字符,否则解密发生错误"<<endl;
cin.getline(resource_text,100);
cout<<endl<<endl;
cout<<"你所输入的明文为:"<<endl;
cout<<resource_text<<endl;

int len;
len=strlen(resource_text);
cout<<"明文的长度为:"<<len<<endl<<endl;

cout<<"加密过程:"<<endl;
encrypted_process(resource_text,security_text,len); //调用加密算法函数
cout<<endl<<endl;

cout<<"解密过程:"<<endl;
open_process(security_text,open_text,len); //调用解密算法函数
cout<<endl<<endl;

//以下验证加密和解密是否正确
if(strcmp(resource_text,open_text)==0)
cout<<"此加密算法和解密算法是正确的"<<endl;
else
cout<<"对不起,发生错误"<<endl;
return 0;
}
void encrypted_process(const char * resource,char * security,int length)
{
int i;
cout<<"明文经加密后的密文为:"<<endl;
for(i=0;i<length;i++)
{
*security=encrypted_query_table(*resource);
cout<<*security;
resource++;
security++;
}
*security='\0';
cout<<endl;
}

void open_process(const char * security,char * open,int length)
{
int i;
cout<<"解密后的密文为:"<<endl;
for(i=0;i<length;i++)
{
*open=open_query_table(*security);
cout<<*open;
security++;
open++;
}
*open='\0';
cout<<endl;
}

char encrypted_query_table(char IP)
{
switch(IP)
{
case 'A' : return 78;
case 'B' : return 81;
case 'C' : return 74;
case 'D' : return 58;
case 'E' : return 26;
case 'F' : return 47;
case 'G' : return 80;
case 'H' : return 60;
case 'I' : return 59;
case 'J' : return 61;
case 'K' : return 63;
case 'L' : return 65;
case 'M' : return 67;
case 'N' : return 69;
case 'O' : return 71;
case 'P' : return 73;
case 'Q' : return 75;
case 'R' : return 77;
case 'S' : return 79;
case 'T' : return 83;
case 'U' : return 85;
case 'V' : return 87;
case 'W' : return 89;
case 'X' : return 91;
case 'Y' : return 93;
case 'Z' : return 94;
case 'a' : return 95;
case 'b' : return 97;
case 'c' : return 27;
case 'd' : return 62;
case 'e' : return 64;
case 'f' : return 66;
case 'g' : return 68;
case 'h' : return 70;
case 'i' : return 72;
case 'j' : return 76;
case 'k' : return 84;
case 'l' : return 82;
case 'm' : return 86;
case 'n' : return 88;
case 'o' : return 92;
case 'p' : return 90;
case 'q' : return 96;
case 'r' : return 98;
case 's' : return 100;
case 't' : return 102;
case 'u' : return 104;
case 'v' : return 106;
case 'w' : return 101;
case 'x' : return 103;
case 'y' : return 124;
case 'z' : return 115;
case ',' : return 35;
case '.' : return 51;
case ' ' : return 29;
}
return IP;
}

char open_query_table(char IP)
{
switch(IP)
{
case 78 : return 'A';
case 81 : return 'B';
case 74 : return 'C';
case 58 : return 'D';
case 26 : return 'E';
case 47 : return 'F';
case 80 : return 'G';
case 60 : return 'H';
case 59 : return 'I';
case 61 : return 'J';
case 63 : return 'K';
case 65 : return 'L';
case 67 : return 'M';
case 69 : return 'N';
case 71 : return 'O';
case 73 : return 'P';
case 75 : return 'Q';
case 77 : return 'R';
case 79 : return 'S';
case 83 : return 'T';
case 85 : return 'U';
case 87 : return 'V';
case 89 : return 'W';
case 91 : return 'X';
case 93 : return 'Y';
case 94 : return 'Z';
case 95 : return 'a';
case 97 : return 'b';
case 27 : return 'c';
case 62 : return 'd';
case 64 : return 'e';
case 66 : return 'f';
case 68 : return 'g';
case 70 : return 'h';
case 72 : return 'i';
case 76 : return 'j';
case 84 : return 'k';
case 82 : return 'l';
case 86 : return 'm';
case 88 : return 'n';
case 92 : return 'o';
case 90 : return 'p';
case 96 : return 'q';
case 98 : return 'r';
case 100 : return 's';
case 102 : return 't';
case 104 : return 'u';
case 106 : return 'v';
case 101 : return 'w';
case 103 : return 'x';
case 124 : return 'y';
case 115 : return 'z';
case 35 : return ',';
case 51 : return '.';
case 29 : return ' ';
}
return IP;
}

你可能感兴趣的:(C++,c,算法,Security,C#)