初赛

baby_code

阅读ast代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
key = '345y'

def check(encoded, keyValue):
b = encoded.encode()
k = keyValue.encode()
r0 = r1= r2 = r3 = 0
for i in range(0, len(b) - 4):
r0 = b[i]
r1 = b[i+1]
r2 = b[i+2]
r3 = b[i+3]
b[i+0] = r2 ^ ((r0 >> 4 + k[0]) & 0xff)
b[i+1] = r3 ^ ((r1 >> 2 + k[1]) & 0xff)
b[i+2] = r0 ^ k[2]
b[i+3] = r1 ^ k[3]
k = k[1:]+ k[0]
return b == [88, 35, 88, 225, 7, 201, 57, 94, 77, 56, 75, 168, 72, 218, 64, 91, 16, 101, 32, 207, 73, 130, 74, 128, 76, 201, 16, 248, 41, 205, 103, 84, 91, 99, 79, 202, 22, 131, 63, 255, 20, 16]


def decode():
b = [88, 35, 88, 225, 7, 201, 57, 94, 77, 56, 75, 168, 72, 218, 64, 91, 16, 101, 32, 207, 73, 130, 74, 128, 76, 201, 16, 248, 41, 205, 103, 84, 91, 99, 79, 202, 22, 131, 63, 255, 20, 16]
keys = [[51, 52, 53, 121], [52, 53, 121, 51], [53, 121, 51, 52], [121, 51, 52, 53], [51, 52, 53, 121], [52, 53, 121, 51], [53, 121, 51, 52], [121, 51, 52, 53], [51, 52, 53, 121], [52, 53, 121, 51], [53, 121, 51, 52], [121, 51, 52, 53], [51, 52, 53, 121], [52, 53, 121, 51], [53, 121, 51, 52], [121, 51, 52, 53], [51, 52, 53, 121], [52, 53, 121, 51], [53, 121, 51, 52], [121, 51, 52, 53], [51, 52, 53, 121], [52, 53, 121, 51], [53, 121, 51, 52], [121, 51, 52, 53], [51, 52, 53, 121], [52, 53, 121, 51], [53, 121, 51, 52], [121, 51, 52, 53], [51, 52, 53, 121], [52, 53, 121, 51], [53, 121, 51, 52], [121, 51, 52, 53], [51, 52, 53, 121], [52, 53, 121, 51], [53, 121, 51, 52], [121, 51, 52, 53], [51, 52, 53, 121], [52, 53, 121, 51]]
for i in range(len(b) - 4 - 1, -1, -1):
k = keys[i]
r1 = b[i+3] ^ k[3]
r0 = b[i+2] ^ k[2]
r3 = b[i+1] ^ (((r1 >> 2) + k[1]) & 0xff)
r2 = b[i+0] ^ (((r0 >> 4) + k[0]) & 0xff)
b[i] = r0
b[i+1] = r1
b[i+2] = r2
b[i+3] = r3

print(''.join(list(map(chr, b))))
decode()

分区赛

只做了道签到题