华为机试——字符串加密

来源:互联网 发布:2013年中国进出口数据 编辑:程序博客网 时间:2024/06/05 20:50

有一种技巧可以对数据进行加密,它使用一个单词作为它的秘钥。下面是它的工作原理:首先:选择一个单词作为秘钥,如TRAILAZERS。如果单词中包含有重复的字母,只包邮第1个,其余几个丢弃。现在修改过的那个单词位于字母表下面,如下所示:

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
T R A I L B Z E S C D F G H J K M N O P Q U V W X Y
在对信息进行加密时,信息中的每个字母用下面那行对应的字母替换——取代原文的字母(字母字符的大小写状态应该保留)。因此,使用这个秘钥,Attack AT DAWN(黎明时攻击)就会被加密为Tpptad TP ITVH

#include<iostream>#include<string>#include<cctype>#include<map>using namespace std;int main(){    string s1("ABCDEFGHIJKLMNOPQRSTUVWXYZ");    string s2("TRAILBZESCDFGHJKMNOPQUVWXY");    map<char,char> trans_map;    trans_map[' ']=' ';    for(size_t i=0;i<s1.size();i++)        trans_map[s1[i]]=s2[i];    for(size_t i=0;i<s1.size();i++)        trans_map[tolower(s1[i])]=tolower(s2[i]);    /*        map<char,char>::iterator map_it=trans_map.begin();    for(;map_it!=trans_map.end();++map_it)        cout<<map_it->first<<" "<<map_it->second<<endl;        */    string txt;    getline(cin,txt);    for(size_t i=0;i<txt.size();i++)    {        map<char,char>::const_iterator it=trans_map.find(txt[i]);        if(it!=trans_map.end())            txt[i]=it->second;    }    cout<<txt<<endl;}
0 0
原创粉丝点击