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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| import base64 import string
def check(key): x = [78, 82, 81, 64, 80, 67, 125, 83, 96, 56, 121, 84, 61, 126, 81, 79, 79, 119, 38, 120, 39, 74, 112, 38, 44, 126, 103] if len(key) != len(x): print('Wrong length!') exit() for i in range(len(key)): if ord(key[i]) ^ i != x[i]: return 0 return 1
def init(key): s_box = list(range(256)) j = 0 for i in range(256): j = (j + s_box[i] + ord(key[i % len(key)])) % 256 s_box[i], s_box[j] = s_box[j], s_box[i] return s_box
def fun(msg, key="Just kidding, don't take it personally!"): x = [] for i in range(len(msg)): x.append(ord(msg[i]) ^ ord(key[i % len(key)])) for i in range(len(x)): x[i] ^= i return x
def encrypt1(msg, s_box): x = [] i = 0 j = 0 for k in range(len(msg)): i = (i + 1) % 256 j = (j + s_box[i]) % 256 s_box[i], s_box[j] = s_box[j], s_box[i] t = (s_box[i] + s_box[j]) % 256 x.append(ord(msg[k]) ^ s_box[t]) return x
def encrypt2(msg, s_box, key): x = [] i = 0 j = 0 for k in range(len(msg)): i = (i + 1) % 256 j = (j + s_box[i]) % 256 s_box[i], s_box[j] = s_box[j], s_box[i] t = (s_box[i] + s_box[j]) % 256 x.append(ord(msg[k]) ^ s_box[t] ^ ord(key[i])) return x
def encrypt(msg, s_box): x = [] i = 0 j = 0 for k in range(len(msg)): i = (i + 1) % 256 j = (j + s_box[i]) % 256 s_box[i], s_box[j] = s_box[j], s_box[i] t = (s_box[i] + s_box[j]) % 256 x.append(ord(msg[k]) ^ s_box[t] ^ i) return x
if __name__ == '__main__': key = input('Please input your key:') if check(key) == 1: print('Right!') else: print('Wrong!') exit() msg = input('Please input your message:') box = init(key) encode = encrypt(msg, box) string1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' string2 = 'YRiAOe4PlGvxaCoNj2ZgX+q8t/5Em6IUpM9FrVb7BKwsT1n3fSydhDWuQHJ0ckzL' encode = base64.b64encode(bytes(encode)).decode().translate(str.maketrans(string1, string2)) if encode == 'mWGFL24R/RSZY3pzK9H4FOmFOnXJKyCjXWbZ7Ijy11GbCBukDrjsiPPFiYB=': print('Congraduation!You get the right flag!') else: print('Wrong!')
|