加密和解密应该 应该还有其他彩蛋
本题思想是来自 数学的函数映射
由于 字符的 加密 和 解密过程都是一一对应的,所以满足一一映射。
加密函数 encode(s1 [ i ] ) = s2 [ i ]
解密函数 decode(s2 [ i ] ) = s1 [ i ]。对应关系就是这样,然后解决函数的参数怎么构成,原数组和加密数组都是字符,可以利用ASCII码对应。
手残图片
*1代码
/* 字符串加密
加密 由S1向S2映射,这个关系由P1保存,P1(S1[i])-> S2[i],
解密 反向 P2(S2[i])-> S1[i],
利用ASCII码值,表明映射关系,先进行加密,加密后字符串解密
应该还有其他好玩的彩蛋
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
char s1[30]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
char s2[30]={'n','g','z','q','t','c','o','b','m','u','h','e','l','k','p','d','a','w','x','f','y','i','v','r','s','j'};
char p1[26],p2[26];
int main(){
char s[1000];
int s_len,i;
for(i=0;i<26;i++){
p1[s1[i]-'a']=s2[i];
p2[s2[i]-'a']=s1[i];
}
cout<<"请输入您想加密的字符串:"<<endl;
cin>>s;
s_len=strlen(s);
for(i=0;i<s_len;i++){
s[i]=p1[s[i]-'a'];
}cout<<"加密后字符串:"<<endl<<s<<endl;
for(i=0;i<s_len;i++){
s[i]=p2[s[i]-'a'];
}cout<<"原字符串:"<<endl<<s;
return 0;
}