换表Base64

原理

换表base64只是在原有base64加密下进行了一些字符变换。

过程如下:

  • 将字符串进行base64加密

  • 自定义一个编码表

  • 找到base64加密后的字符串的各个字符在标准表中的下标

  • 这些下标对应在自定义表中的字符替换原有字符

直接上源码:

import base64
dic = 'JKLMNOxyUVzABCDEFGH789PQIabcdefghijklmWXYZ0123456RSTnopqrstuvw+/=' # 自定义编码表
o_dic = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=' # 标准表
cy = 'flag{this is flag!}'.encode() # 需要加密的字符串
base64_cy = base64.b64encode(cy).decode()
# 下面开始换表
crypto = '' #最后的密文
for i in base64_cy:
    s = o_dic.find(i)
    crypto += dic[s]
print(crypto)
# 结果:aWRiaq3nbxmTUxmTUxa2IPdigF==

解码

我们知道密文、自定义编码表、标准表,很容易就能解密

import base64
dic = 'JKLMNOxyUVzABCDEFGH789PQIabcdefghijklmWXYZ0123456RSTnopqrstuvw+/=' # 自定义编码表
o_dic = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=' # 标准表
cy = 'aWRiaq3nbxmTUxmTUxa2IPdigF==' # 密文
flag = '' # 原文
for i in cy:
    flag += o_dic[dic.find(i)]
print(base64.b64decode(flag).decode())
# 结果:flag{this is flag!}