N. 已知明文攻击(弱化版)

内存限制:512 MiB 时间限制:1000 ms 标准输入输出
题目类型:传统 评测方式:文本比较

题目描述

大家在问题求解(一)第一周理论作业中接触过凯撒密码,它采用字母偏移的方法来加密文本。但是在攻击者得到了较长密文的的前提下,它容易被频率分析法攻破。为了改进凯撒密码,人们发明了维吉尼亚密码来循环地应用凯撒密码对每个字符进行加密。但是,维吉尼亚密码的偏移函数仅是定义在 26 个字母上的置换。为了把它推广到所有 ASCII 字符上,我们将明文、密钥视作字节流,定义一个维吉尼亚密码的变体:

令明文 ,密钥 ,则密文 。

我们假定所有明文由 ASCII 可显示字符组成。但当采用这种加密方式时,密文可能含有非 ASCII 可显示字符,这导致它不能以文本形式传输。解决这种问题的通用方法是使用 Base64 编码,即用一个 ASCII 可显示字符(只取其中 64 种,即 Base64 字符)来表示 6 位的信息,并把原来用字节流表示的比特流转换为 base64 字符流。

这种加密方法看起来要比凯撒密码更加能抵抗频率分析法(虽然事实上不能),不过仍然在已知明文攻击面前不堪一击,即当得知一段密文及其对应的明文时,可以更轻易地破解密码。现在我们要求你实现对于这一密码体制的已知明文攻击,即给定一段使用 Base64 编码的密文 和对应的 ASCII 明文 。然后给定一段新的同样用 Base64 编码的密文 ,要求给出其对应的 ASCII 明文 。

为了简化问题,保证 。

输入格式

第一行一个字符串 。

第二行一个字符串 。

第三行一个字符串 。

输出格式

一行一个字符串 。

样例

样例输入

jJbccqd5AqwrnQzx6LwL====
Goodbye PS2023!
jYzZerQg7d8Negz11w==

样例输出

Hello PS2024!

数据范围与提示

所有出现的字符串的长度不大于 。

涉及期末要点:

  • Base64 编码规则。将 Base64 转化为 ASCII 字符串或反之。
  • 基本的偏移密码知识,破解古典密码的常见方法。