题目描述
在 TrifidCipher 中,编码是通过使用一个表格将每个明文字母分解为一个三元组,混合三元组的组成部分,然后逆向应用表格,将这些混合的三元组转换为密文字母。
创建一个带有三个参数的函数;一个 27 个字母的键、一个中断点和一个包含要编码的消息的字符串。
加密规则有一些变化。密码规则的一个版本概述如下:
key="EPSDUCVWYM+ZLKXNBTFGORIJHAQ"
period=5
message="DEFENDTHEEASTWALLOFTHECASTLE+"
trifidcipher(key,period,message)➞"SUEFECPHSEGYYJIXIMFOFOCEJLBSP"
步骤1:将键分成三个方块:
方块 1 方 2 块 3
1 2 3 1 2 3 1 2 3
1 E P S 1 M + Z 1 F G O
2 D U C 2 L K X 2 R I J
3 V W Y 3 N B T 3 H A Q
步骤2:找到上面方块中的明文字母,D在第1方块,第2行,第1列,所以D变成121。同理,E变成111,依此类推。
垂直写下每个字母对应的数字:
D E F E N D T H E E A S T W A L L O F T H E C A S T L E +
1 1 3 1 2 1 2 3 1 1 3 1 2 1 3 2 2 3 3 2 3 1 1 3 1 2 2 1 2
2 1 1 1 3 2 3 3 1 1 3 1 3 3 3 2 2 1 1 3 3 1 2 3 1 3 2 1 1
1 1 1 1 1 1 3 1 1 1 2 3 3 2 2 1 1 3 1 3 1 1 3 2 3 3 1 1 2
步骤3:目前仍是替换密码,很容易破解。现在,你必须使用周期,它通常是5−20之间的一个数字。
D E F E N D T H E E A S T W A L L O F T H E C A S T L E +
1 1 3 1 2 1 2 3 1 1 3 1 2 1 3 2 2 3 3 2 3 1 1 3 1 2 2 1 2
2 1 1 1 3 2 3 3 1 1 3 1 3 3 3 2 2 1 1 3 3 1 2 3 1 3 2 1 1
1 1 1 1 1 1 3 1 1 1 2 3 3 2 2 1 1 3 1 3 1 1 3 2 3 3 1 1 2
步骤4:将数字分组,水平读出每组中的数字,然后使用原始的键格替换回字母。
113 122 111 311 111 123 112 331 113 111 312 133 133 323 322
S U E F E C P H S E G Y Y J I
223 322 211 311 313 311 313 123 111 323 221 232 113 112
X I M F O F O C E J L B S P
步骤5:返回最终结果:
eMessage="SUEFECPHSEGYYJIXIMFOFOCEJLBSP"
输入输出格式
输入格式
第一行有一个字符串 key,表示一个 27 个字母的键;
第二行有一个整数 period, 表示中断周期;
第三行有一个字符串 message,表示要编码的字符串。
输出格式
输出一个字符串,表示编码后的字符串。
输入输出样例1
输入
EPSDUCVWYM+ZLKXNBTFGORIJHAQ
15
MUBASHIR
输出
+OHTW+XD
输入输出样例2
输入
EPSDUCVWYM+ZLKXNBTFGORIJHAQ
5
DEFENDTHEEASTWALLOFTHECASTLE+
输出
SUEFECPHSEGYYJIXIMFOFOCEJLBSP
说明提示
键、数据和输出都将包含唯一有效的大写字母和一个加号 (+) 作为第 27 个字母。
键将始终是完整的 27 个字母,没有重复,句点始终是正整数。