题目
加密密文:afZ_r9VYfScOeO_UL^RWUc
格式:flag{ }
分析
先复习一下凯撒密码。
它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是 3 的时候,所有的字母 A 将被替换成 D,B 变成 E,以此类推。
凯撒密码是单表代换密码,我们假设密文的前 4 个字符“afZ_”对应的明文是“flag”,尝试找出密钥 k。
通过对照 ASCII 码表,我们发现“flag”分别由“afZ_”前移 5/6/7/8 位得到。所以标题中的“变异”指的大抵就是这种在单表代换的基础上依次 +1 的密钥。
有道理,代码实现一下试试看:
char s[] = "afZ_r9VYfScOeO_UL^RWUc";
int add = 5;
for (int i = 0; i < strlen(s); ++i) {
s[i] += add++;
}
printf("%s", s);
得到 flag。
Flag
flag{Caesar_variation}