常规的凯撒密码是对每个字母做相同单位的移位。变异凯撒每个字母的移位可能各不相同。
以一个CTF题为例
加密密文:afZ_r9VYfScOeO_UL^RWUc
格式:flag{ }
做以下尝试
afZ_ -> flag
rc -> {}
其中ASCII码值的变化为
差值 | ||
---|---|---|
a | f | 5 |
f | l | 6 |
Z | a | 7 |
_ | g | 8 |
所以解密方法已经很明显了~
c = "afZ_r9VYfScOeO_UL^RWUc"
move = 5
flag = ""
for i in c:
flag += chr(ord(i) + move)
move += 1
print(flag)
结果为flag{Caesar_variation}