古老的密码
Northeastern Europe 2004 (ZOJ2658, POJ2159)
古老的罗马帝国最常用的两种加密方法是:替换加密法和置换加密法。
替换加密法是将原文中的每个字符替换成对应的其他字符。用来替换的字符必须是不同的。对某些字符来说,替换字符可能跟原始字符一致,即本身替换本身。例如一种替换加密法是将原文中所有字符('A'到'Y')替换成字母表中下一个字符,并把'Z'替换成'A'。如果原文为“VICTORIOUS”,采用此替换加密法得到的密文为“WJDUPSJPVT”。
置换加密法又称换位密码,并没有改变原文字母,只改变了这些字母的出现顺序。即这种加密方法是对原文施加一种置换。例如如果采取的置换为(2,1,5,4,3,7,6,10,9,8),则原文“VICTORIOUS”加密后得到“IVOTCIRSUO”。
很容易注意到,单独应用替换加密法或置换加密法,得到的加密效果都很弱。如果将这两种加密方法组合到一起,有时加密效果很好。因此,可以把原文先用替换加密法进行加密,然后将得到的文字再用置换加密法进行加密。例如,依次采用上述替换加密法和置换加密法,原文“VICTORIOUS”被加密成“JWPUDJSTVP”。
考古学家发现一些文字,他们猜测这些文字是经过替换加密法和置换加密法加密过的。他们猜想加密前的原文是怎样的。你的任务是编写程序,验证他们的猜想是否正确。
输入文件有多个测试数据。每个测试数据占2行。第1行为刻在石头上的文字,只包含大写英文字母。第2行是考古学家猜测的原文,也只包括大写英文字母。这两行长度都不超过100。
如果测试数据中第1行文字可能是第2行文字经过替换加密方法和置换加密方法加密后的密文,则输出“YES”,否则输出“NO”。
JWPUDJSTVP
VICTORIOUS
NEERCISTHEBEST
SECRETMESSAGES
YES
NO