crypto/custom_encryption
This commit is contained in:
39
crypto/custom_encryption/solve.py
Executable file
39
crypto/custom_encryption/solve.py
Executable file
@@ -0,0 +1,39 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
def generator(g, x, p):
|
||||
return pow(g, x) % p
|
||||
|
||||
# xor encryption is symmetric, apart
|
||||
# from the reversing part
|
||||
def dynamic_xor_decrypt(plaintext, text_key):
|
||||
cipher_text = ""
|
||||
key_length = len(text_key)
|
||||
for i, char in enumerate(plaintext):
|
||||
key_char = text_key[i % key_length]
|
||||
encrypted_char = chr(ord(char) ^ ord(key_char))
|
||||
cipher_text += encrypted_char
|
||||
return ''.join(reversed(cipher_text))
|
||||
|
||||
def decrypt(cipher, key):
|
||||
plaintext = ''
|
||||
for char in cipher:
|
||||
plaintext += chr(char // (key * 311))
|
||||
return plaintext
|
||||
|
||||
cipher = [151146, 1158786, 1276344, 1360314, 1427490, 1377108, 1074816, 1074816, 386262, 705348, 0, 1393902, 352674, 83970, 1141992, 0, 369468, 1444284, 16794, 1041228, 403056, 453438, 100764, 100764, 285498, 100764, 436644, 856494, 537408, 822906, 436644, 117558, 201528, 285498]
|
||||
|
||||
if __name__ == '__main__':
|
||||
p = 97
|
||||
g = 31
|
||||
a = 97
|
||||
b = 22
|
||||
u = generator(g, a, p)
|
||||
v = generator(g, b, p)
|
||||
key = generator(v, a, p)
|
||||
b_key = generator(u, b, p)
|
||||
assert key == b_key
|
||||
decrypted = decrypt(cipher, key)
|
||||
xor_decrypted = dynamic_xor_decrypt(decrypted, 'trudeau')
|
||||
print(xor_decrypted)
|
||||
|
||||
|
Reference in New Issue
Block a user