Vignere, Custom encryption


Код решения Custom encryption:

from sympy import mod_inverse

a = 90
b = 26
p = 97
g = 31
cipher = [61578, 109472, 437888, 6842, 0, 20526, 129998, 526834, 478940, 287364, 0, 567886, 143682, 34210, 465256, 0, 150524, 588412, 6842, 424204, 164208, 184734, 41052, 41052, 116314, 41052, 177892, 348942, 218944, 335258, 177892, 47894, 82104, 116314]


def dynamic_xor_decrypt(cipher_text, text):
        decrypted = ""
        key_length = len(text)
        for i, char in enumerate(cipher_text):
                key_char = text[i % key_length]
                decrypted_char = chr(ord(char) ^ ord(key_char))
                decrypted += decrypted_char
        return decrypted

def reverse_generator(g, x, p):
        return pow(g, x, p)

def decrypt(cipher, key):
        dec_text = ""
        for char in cipher:
                dec_char = chr(char // (key * 311))
                dec_text += dec_char
        return dec_text

def main():
        u = reverse_generator(g, a, p)
        v = reverse_generator(g, b, p)
        key = reverse_generator(v, a, p)
        text = "trudeau"

        cipher_text = decrypt(cipher, key)

        flag = dynamic_xor_decrypt(cipher_text, text)

        print(flag[::-1])

if __name__ == "__main__":
        main()

Видео выполнения:


Загрузки

Download files archive