思路
下载附件得到一串数字
8842101220480224404014224202480122
没有头绪,于是采用”题目攻击“
搜索幂数加密得到二进制加密方法,得到
二进制幂数加密法就是应用这个原理,由于英文字母只有26个字母,由公式可知,只要2的0、1、2、3、4、5次幂就可以表示31个单元。通过用二进制幂数表示字母序号数来加密。例如
明文: d o n o t p u l l a l l y o u r e g g s i n o n e b a s k e t
字母序号: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
由于 4 = 2 2 4=2^2 4=22 所以D加密过之后是2; 15 = 2 0 + 2 1 + 2 2 + 2 3 15=2^0+2^1+2^2+2^3 15=20+21+22+23所以O加密后是0123。同理得到上述明文的加密后的密文
密文: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
其中空格表示字母的间隔,/表示单词的间隔。
并没有什么用。于是放弃了,看了题解。
根据题解得到题目有提到一共八个字母,那么原数字可以看成8段,恰好7个0,那么一段一个数字,每个数字个位数字之和都小于26(有点幂数加密的味道),可以看成是偏移量,就可以得到明文。
脚本如下
ans=[88421,122,48,2244,4,142242,248,122]
for i in ans:
temp=0
while i:
temp+=i%10
i//=10
temp=ord('A')+temp-1
print(chr(temp),end='')