题目:加密密文:afZ_r9VYfScOeO_UL^RWUc
格式:flag{ }
凯撒密码:简而言之是按固定值偏移替换
变异凯撒可能偏移量不固定,下面来具体分析:
先对应观察一下ASCII码:
afZ_r 对应的ASCII码为:97 102 90 95 114
flag{ 对应的ASCII码为:102 108 97 103 123
对应的偏移量为: 5 6 7 8 9
我们可以发现:偏移量从5开始,逐个+1
根据这个解题逻辑来写一个python代码:
str = 'afZ_r9VYfScOeO_UL^RWUc'
k = 5
for i in range(len(str)):
# 字符逐个转ASCII码
asc = ord(str[i])
# ASCII码偏移
asc += k
# ASCII码转字符
asc = chr(asc)
# 形成字符数组
de_str = append(asc)
k = k+1
i = i+1
#数组转字符
de_str = ''.join(de_str)
print(de_str)
这个代码更简单一些:
str = 'afZ_r9VYfScOeO_UL^RWUc'
k = 5
for i in str:
# 字符逐个转ASCII码
asc = ord(i)
# ASCII码偏移
asc = asc+k
# ASCII码转字符
asc = chr(asc)
print(asc,end="")
# 合起来写就是:print(chr(ord(i) + k),end='')
k = k+1
其中基本函数简要说明:
ord() 将字符转换成ASCII码 chr() 将ASCII码转换成字符 join()将字符串、列表、元组、字典中的元素用指定的分隔符隔开连接成一个新的字符串 用法:‘分隔符’.join(字符串、列表、元组、字典) 分隔符可为空
运行结果: