XCTF 幂数加密 WP

原题目链接-幂数加密

思路

下载附件得到一串数字
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='')
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值