常規的凱撒密碼是對每個字母做相同單位的移位。變異凱撒每個字母的移位可能各不相同。
以一個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}