[GKCTF2020]小学生的密码学
考点:仿射密码
给自己做个记录
题目
e(x)=11x+6(mod26)
密文:welcylk
(flag为base64形式)
利用在线解密网站:https://cryptii.com/pipes/affine-cipher

flag{c29yY2VyeQ==}
[GKCTF2020]汉字的秘密
附件内容是当铺密码
dh = '田口由中人工大土士王夫井羊壮' ds = '00123455567899' cip = input('请输入当铺密码:')#'王壮 夫工 王中 王夫 由由井 井人 夫中 夫夫 井王 土土 夫由 土夫 井中 士夫 王工 王人 土由 由口夫' s = '' for i in cip: if i in dh: s += ds[dh.index(i)] else: s += ' ' print(s)#输出对应的数字 list = s.split(" ")#空格分隔,返回列表 str = "" for i in list: str += chr(int(i)) print(str)#输出对应的ASCII码
输出EJ>CvSHMV7G9R9@?3k
结合FLAG的ASCII码和输出结果的ASCII码发现,差值依次为1 2 3 4
完整脚本如下:
dh = '田口由中人工大土士王夫井羊壮' ds = '00123455567899' cip = input('请输入当铺密码:')#'王壮 夫工 王中 王夫 由由井 井人 夫中 夫夫 井王 土土 夫由 土夫 井中 士夫 王工 王人 土由 由口夫' s = '' for i in cip: if i in dh: s += ds[dh.index(i)] else: s += ' ' print(s)#输出对应的数字 list = s.split(" ")#空格分隔,返回列表 str = "" for i in list: str += chr(int(i)) print(str)#输出对应的ASCII码 result = '' for i in range(0,len(list)): result += chr(int(list[i])+i+1) print('result=', result, '\t\tresult.lower()=', result.lower())
