BUUCTF_Crypto_WriteUp | 变异凯撒

发布时间 2023-11-06 17:09:19作者: Guanz

题目

加密密文: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}

参考

凯撒密码
ASCII码对照表