CTF学记之云影密码

2023.10.22

表现形式

1,2,4,8这四个数字,可以通过加法来表示0-9中的任何一个数字。之后再用1-26来表示26个英文字母,就有了密文与明文之间的对应关系。引入0来作为间隔,以免出现混乱。所以云影密码又叫“01248密码”。

示例1:

1 A 28 J 1288 S
2 B 128 K 488 T
12 C 48 L 1488 U
4 D 148 M 2488 V
14 E 248 N 12488 W
24 F 1248 O 888 X
124 G 88 P 1888 Y
8 H 188 Q 2888 Z
18 I 288 R

示例2:

加密字符串:884080810882108108821042084010421 

解密字符串:THISISFLAG

解密脚本实现:

def yun_ying_decode(ciphertext):
    alphabet = [chr(i) for i in range(ord('A'),ord('Z')+1)]
    list_1 = str(ciphertext).split('0')
    plaintext = ''
    for i in list_1:
        plaintext += alphabet[sum(map(int,tuple(i)))-1]
    return plaintext

压缩成一行代码:

def yun_ying_decode(ciphertext):
    return ''.join([[chr(i) for i in range(ord('A'),ord('Z')+1)][sum(map(int,tuple(i)))-1] for i in str(ciphertext).split('0')])

你可能感兴趣的:(CTF,密码学)