好玩的题(2)
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/102400K (Java/Other)
Total Submission(s) : 3 Accepted Submission(s) : 1
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
在密码学中,恺撒密码是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,c变成f,.......z变成c。。。以此类推。这个加密方法是以恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。 恺撒密码通常被作为其他更复杂的加密方法中的一个步骤。恺撒密码还在现代的ROT13系统中被应用。但是和所有的利用字母表进行替换的加密技术一样,恺撒密码非常容易被破解,而且在实际应用中也无法保证通信安全。
实际上,恺撒加密的密钥(也就是明文和密文之间的那个偏移量)只有26个选择,所以非常容易能够遍历得到所有可能的明文再加以判断。在明文有意义的情况下,我们人脑可以非常容易的挑选出明文,然而电脑却不能。所以就有了字母频率攻击。
所谓字母频率攻击,就是利用大量数据中测试得到的英文字母的频率来与解密得到的文章进行对比,在所有的26中可能中找出与统计规律最符合的结果,从而得到明文。
现在给你一个经过凯撒加密得到的密文,你能破解得到他对应的明文么?
当然这里保证明文是足够长而且是有意义的,符合统计规律。
英文字母频率表:
字母 英语中出现的频率
a 8.167%
b 1.492%
c 2.782%
d 4.253%
e 12.702%
f 2.228%
g 2.015%
h 6.094%
i 6.966%
j 0.153%
k 0.772%
l 4.025%
m 2.406%
n 6.749%
o 7.507%
p 1.929%
q 0.095%
r 5.987%
s 6.327%
t 9.056%
u 2.758%
v 0.978%
w 2.360%
x 0.150%
y 1.974%
z 0.074%
实际上,恺撒加密的密钥(也就是明文和密文之间的那个偏移量)只有26个选择,所以非常容易能够遍历得到所有可能的明文再加以判断。在明文有意义的情况下,我们人脑可以非常容易的挑选出明文,然而电脑却不能。所以就有了字母频率攻击。
所谓字母频率攻击,就是利用大量数据中测试得到的英文字母的频率来与解密得到的文章进行对比,在所有的26中可能中找出与统计规律最符合的结果,从而得到明文。
现在给你一个经过凯撒加密得到的密文,你能破解得到他对应的明文么?
当然这里保证明文是足够长而且是有意义的,符合统计规律。
英文字母频率表:
字母 英语中出现的频率
a 8.167%
b 1.492%
c 2.782%
d 4.253%
e 12.702%
f 2.228%
g 2.015%
h 6.094%
i 6.966%
j 0.153%
k 0.772%
l 4.025%
m 2.406%
n 6.749%
o 7.507%
p 1.929%
q 0.095%
r 5.987%
s 6.327%
t 9.056%
u 2.758%
v 0.978%
w 2.360%
x 0.150%
y 1.974%
z 0.074%
Input
有多组测试样例,各组测试样例之间由一个 只含有#的单行分割。输入保证各组测试样例当中不含有上述字符。
每组测试样例为一篇经过加密后的文章,文章中包含各种数字、标点、回车空格、以及大小写的英文字母。这当中只有英文字母是经过加密的,其余字符均为原样输出(包括回车)。
测试样例的长度小于10^8.
每组测试样例为一篇经过加密后的文章,文章中包含各种数字、标点、回车空格、以及大小写的英文字母。这当中只有英文字母是经过加密的,其余字符均为原样输出(包括回车)。
测试样例的长度小于10^8.
Output
对于每组测试样例,输出解密后得到的明文,当然,也要原样包括各种数字、标点等,以及分割符。也就是说,你除了替换掉文章中的英文字母以外,其他所有的字符都得按原样输出。
Sample Input
123345,4434 34443442 324,534 324 # 3433,33324 # ”123445677”
Sample Output
123345,4434 34443442 324,534 324 # 3433,33324 # ”123445677”