幂数加密(攻防世界)
写在前面:

原题:传送门
题目如下:

附件内容:
是一个文本文档:
8842101220480224404014224202480122
题目标题提示我们说 是 幂数加密 解析如下:
幂数加密
幂数加密是一种基于二进制幂次表示法的加密方法。由于英文字母只有26个字母,通过使用2的0、1、2、3、4、5次幂可以表示31个单元。通过用二进制幂数表示字母序号数来加密。
加密过程
在幂数加密中,每个字母的序号可以用2的幂次表示。例如:
字母D的序号是4,可以表示为2^2,因此加密后为2。
字母O的序号是15,可以表示为2^0 + 2^1 + 2^2 + 2^3,因此加密后为0123。
例如,明文 "do not pull all your eggs in one basket" 的字母序号为:
4 15 14 15 20 16 21 12 12 1 12 12 25 15 21 18 5 7 7 19 9 14 15 14 5 2 1 19 11 5 20
加密后的密文为:
2 0123 123 0123 24 4 024 23 23 0 23 23 034 0123 024 14 02 012 012 014 03 123 0123 123 02 1 0 014 013 02 24
解密过程
解密时,可以将密文按照0分隔符分成若干小块,然后将每个小块中的数字相加,得到对应的字母序号。例如:
密文:8842101220480224404014224202480122
分块:88421 0122 048 02244 04 0142242 0248 0122
将每个小块中的数字相加,得到:
23 5 12 12 4 15 14 5
对应的字母为:
W E L L D O N E (剧透一下 其实这个就是 flag (●´ω`●)ゞ)
我们根据文档所给的内容 按照 方法先照0分开 得到
88421 0 122 0 48 0 2244 0 4 0 142242 0 248 0 122
再将每个小块中的数字相加 得到
23 5 12 12 4 15 14 5
最后 根据每个数字对应的字母 得到
WELLDONE

再根据题目要求 得到答案为:
cyberpeace{WELLDONE}
还有一种解法是:
因为提示是八位大写字母,又发现有7个0,所以我们可以猜想分成8段 然后用python脚本来实现
a=["88421","0122","048","02244","04","0142242","0248","0122"]
flag=""
for j in range(0,len(a)): str = a[j] list=[] sum=0 for i in str: list.append(i) length = len(list) for i in range(0,length): sum+=int(list[i]) flag+=chr(64+sum)
print flag
整理不易,头发掉了几根。觉得有收获的话,点个赞关注一下呗? 我保证,我的主页里还有更多让你头发比你掉得还多的好东西!
写在后面:

