二进制幂数加密法

二进制幂数加密法

二进制幂数加密法

二进制幂数加密法就是应用这个原理,由于英文字母只有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 所以D加密过之后是2;15=2^0+2^1+2^2+2^3所以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

来自百度百科
比如我们来看下面的一段密文:

8842101220480224404014224202480122

采用云影加密算法
解密云影加密过程:
8842101220480224404014224202480122
88421 122 48 2244 4 142242 248 122
23 5 12 12 4 15 14 5
在通过二进制幂数加密:
W E L L D O N E
所以flag

python代码实现

import math
def binexp(arr):# 幂数解密 arr是一个数组或列表
    for i in arr:
        sum = 0
        for j in str(i):
            sum += math.pow(2,int(j))
        print(chr(int(sum) + 64), end='')