小明为了传递信息的需要,针对字母设计了一种数据加密方法。
以一个字母’m’为例 ,具体方法如下:
第一步:求出每字母的十进制ASCII码值。如:字母“A”的ASCII码值是65,字母“a”的ASCII码值是97,字母“ ”(字母空格)的ASCII码值是32,字母“m”的ASCII码值就是109。
注:在C++中,char字符型是做整型处理的。下列代码可求出字符的十进制ASCII码值。
char c=‘m’;
int num;
num=(int)c;
cout << num ; num的值为109
整型和字符型可以相互转换方法:
(char)整型变量=字符型变量
(int)字符型变量=整型变量
第二步:将十进制ASCII码值转换为一个字节的八位二进制ASCII,并将八位二进制ASCII码值分割成前四位与后四位两个二进制数。如 字母“m”的十进制ASCII码值109转换为二进制就是“01101101”,按四位分隔得二进制 “0110”和“1101”。
第三步:分别将上面两个四位二进制数转换为十进制数。四位二进制是“0110”和“1101”转换为十进值是“6”和“13”。
第四步:把每个十进制数按下表挨个转换成一个加密字符,得字母“e”和“0”, 转换成功。对应的密钥如下:
|
值(十进制) |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
|
加密字符 |
H |
a |
p |
P |
y |
N |
e |
w |
Y |
E |
A |
r |
2 |
0 |
1 |
8 |
小王按照上述加密方法,实现了一个字符串加密(仅包含ASCII字符)的C++程序:输入英文句子,程序将其中每个字符转换为2个加密字符并按转换的先后顺序连接起来,最后输出加密结果。下表演示了字符串中一个字符的加密过程:

建议:可使用字符串初始值方法,快速求出对应的密钥匙
string secretKey = "HapPyNewYEAr2018";
输入一行英文字符
输出一行加密后的密文