2086. 加密信息(20分)

加密信息

pwp发给小伊纲的信息被小熊偷偷拦截下来啦。

但这段信息是被做了加密的。经过小熊一番倒腾,确认 pwp 是用了波利比奥斯方阵加密一次后再用维吉尼亚密码又套了一层加密。

对于维吉尼亚密码,为了生成密码,可以使用表格法。这一表格包括了26行字母表,每一行都由前一行向左偏移一位得到。具体使用哪一行字母表进行编译是基于密钥进行的,在过程中会不断地变换。

例如,假设明文为:

ATTACKATDAWN

选择某一关键词并重复而得到密钥,如关键词为 LEMON 时,密钥为:

LEMONLEMONLE

对于明文的第一个字母 A,对应密钥的第一个字母 L,于是使用表格中 L 行字母表进行加密,得到密文第一个字母 L。类似地,明文第二个字母为 T,在表格中使用对应的 E 行进行加密,得到密文第二个字母 X。以此类推,可以得到密文:

LXFOPVEFRNHR

解密的过程则与加密相反。例如:根据密钥第一个字母 L 所对应的 L 行字母表,发现密文第一个字母 L 位于 A 列,因而明文第一个字母为 A。密钥第二个字母 E 对应 E 行字母表,而密文第二个字母 X 位于此行 T 列,因而明文第二个字母为 T。以此类推便可得到明文。

当然,如果用数字 0-25 代替字母 A-Z,维吉尼亚密码的加密文法可以写成同余的形式:

CiPi+Ki(mod26)C_i \equiv P_i + K_i (\bmod 26)

解密方法则能写成:

PiCiKi(mod26)P_i \equiv C_i - K_i (\bmod 26)

对于波利比奥斯方阵(Polybius)则是由一个5行5列的网格组成,网格中包含 26 个英文字母,其中 I 和 J 在同一格中。相应字母用数对表示。

不过数字 1 到 5 有时也用 A, D, F, G, X 代替,pwp 似乎就这么做了;而且为了区分 I 和 J,pwp 在用 Polybius 的时候把 J 加密成 DGS

例如明文:

JUICE

会被加密为:

DGSGXDGAFAX

但小熊破解密文的时候发现一些问题,就是 pwp 用维吉尼亚加密时似乎会把加密和解密过程弄混,导致有些密文是由明文进行一次解密之后得到的,唯一能确定的是,pwp 发的信息(明文)一定会以 IZUNACHAN 开头。小熊和你分享 pwp 的消息记录,但作为回报,你要帮忙破解密文。

输入

输入两个仅包含大写字母的字符串 cckk,分别为经过 Polybius 加密后再加一层维吉尼亚加密或解密得到的密文和维吉尼亚密码使用的密钥关键词。(c,k106)(|c|, |k| \le 10^6)

输出

输出解密后去除固定开头 IZUNACHAN 获得的明文,数据保证解密后明文只有一种可能。

样例

标准输入 复制文本
SCMMCMUBPPWUSBPPBUSCMMCMUBPPWVPWSVCUVTSMZV
PWP
标准输出 复制文本
IZUNADAISUKI
标准输入 复制文本
OKIIKIQJLLEQOJLLJQOKIIKIQJLLERLEORKQRBOIHR
PWP
标准输出 复制文本
IZUNADAISUKI

提示

对于明文 IZUNACHANIZUNADAISUKI,用 Polybius 加密后得到的第一层密文为 DGXXGXFFAAAFDFAAFFDGXXGXFFAAAGAADGGFGXDXDG。以 PWP 作为维吉尼亚密码密钥的关键词,加密上面密文得到第一个样例的密文,解密上面密文则得到第二个样例的密文。

登录以提交代码。
单点时限 1 秒
内存限制 128 MB
提交 593
通过 121