Buat file python dengan nama bebas.py di terminal kalilinux

lalu paste codingan berikut :

from random import randint

import sys  

def generator(g, x, p):

return pow(g, x) % p 

def encrypt(plaintext, key):

cipher = [97965, 185045, 740180, 946995, 1012305, 21770, 827260, 751065, 718410, 457170, 0, 903455, 228585, 54425, 740180, 0, 239470, 936110, 10885, 674870, 261240, 293895, 65310, 65310, 185045, 65310, 283010, 555135, 348320, 533365, 283010, 76195, 130620, 185045]

for char in plaintext:

cipher.append(((ord(char) * key*311)))

return cipher 

def is_prime(p):

v = 0

for i in range(2, p + 1):

if p % i == 0:

v = v + 1

if v > 1:

        return False

    else:

        return True  

def dynamic_xor_encrypt(plaintext, text_key):

    cipher_text = “”

    key_length = len(text_key)

    for i, char in enumerate(plaintext[::-1]):

        key_char = text_key[i % key_length]

        encrypted_char = chr(ord(char) ^ ord(key_char))

        cipher_text += encrypted_char

    return cipher_text 

def dynamic_xor_decrypt(plaintext, text_key):

    cipher_text = “”

    key_length = len(text_key)

     for i, char in enumerate(plaintext[::-1]):

        key_char = text_key[i % key_length]

        encrypted_char = chr(ord(char) ^ ord(key_char))

        cipher_text += encrypted_char 

    plaintext = cipher_text

    cipher_text = “” 

    for i, char in enumerate(plaintext[::-1]):

        key_char = text_key[i % key_length]

        encrypted_char = chr(ord(char) ^ ord(key_char))

        cipher_text += encrypted_char 

    plaintext = cipher_text

    cipher_text = “” 

    for i, char in enumerate(plaintext[::-1]):

        key_char = text_key[i % key_length]

        encrypted_char = chr(ord(char) ^ ord(key_char))

        cipher_text += encrypted_char

    

    return cipher_text  

def test(plain_text, text_key):

    p = 88

    g = 26

    if not is_prime(p) and not is_prime(g):

        print(“Enter prime numbers”)

        return    a = randint(p-10, p)

    b = randint(g-10, g)

    print(f”a = {a}”)

    print(f”b = {b}”)

    u = generator(g, a, p)

    v = generator(g, b, p)    key = generator(v, a, p)

    b_key = generator(u, b, p)

    shared_key = None

    if key == b_key:

        shared_key = key

    else:

        print(“Invalid key”)

        return

    semi_cipher = dynamic_xor_encrypt(plain_text, text_key)

    cipher = encrypt(semi_cipher, shared_key)

    print(f’cipher is: {cipher}’) 

def decrypt(cipher, key):

    plaintext = “”

    for encrypted_value in cipher:

        decrypted_value = encrypted_value // (key * 311)

        plaintext += chr(decrypted_value)

    return plaintext 

def test2():

    p = 97

    g = 31

    a = 88

    b = 26 

    u = generator(g, a, p)

    v = generator(g, b, p)

    key = generator(v, a, p)

    b_key = generator(u, b, p) 

    shared_key = None

    if key == b_key:

        shared_key = key

    else:

        print(“Invalid key”)

        return 

   cipher = [97965, 185045, 740180, 946995, 1012305, 21770, 827260, 751065, 718410, 457170, 0, 903455, 228585, 54425, 740180, 0, 239470, 936110, 10885, 674870, 261240, 293895, 65310, 65310, 185045, 65310, 283010, 555135, 348320, 533365, 283010, 76195, 130620, 185045] 

    semi_cipher = decrypt(cipher, shared_key) 

    flag = dynamic_xor_decrypt(semi_cipher, “trudeau”) 

    print(flag)  

if __name__ == “__main__”:

    # message = sys.argv[1]

    # test(message, “trudeau”)

    test2()

Jalankan python dengan perintah python bebas.py (sesuai dengan nama file)


0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *