hzCPPOJ

数据加密

时间限制:  1 s      内存限制:   128 MB
提交:23     正确:12     分值:98

题目描述

小明为了传递信息的需要,针对字母设计了一种数据加密方法。

以一个字母’m’为例 ,具体方法如下:

第一步:求出每字母的十进制ASCII码值。如:字母“A”的ASCII码值是65,字母“a”的ASCII码值是97,字母“ ”(字母空格)的ASCII码值是32,字母“m”的ASCII码值就是109

注:在C++中,char字符型是做整型处理的。下列代码可求出字符的十进制ASCII码值。

       char c=m;

       int num;

       num=intc;

       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"

输入

输入一行英文字符

输出

输出一行加密后的密文

样例

样例输入:
Happy New Year!2018
样例输出:
yYeawHwHwEpHy1eNwwpHNEeNeawppaPpPHPaPY