Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def str_to_bin(s):
- return ''.join(f'{ord(c):08b}' for c in s)
- def bin_to_str(b):
- chars = [chr(int(b[i:i+8], 2)) for i in range(0, len(b), 8)]
- return ''.join(chars)
- def xor_4bit(a, b):
- return f"{int(a, 2) ^ int(b, 2):04b}"
- def ecb_encrypt(plain_text, key4):
- encrypted_bin = ""
- key_bin = f"{key4:04b}"
- for c in plain_text:
- bin_c = f"{ord(c):08b}"
- left = xor_4bit(bin_c[:4], key_bin)
- right = xor_4bit(bin_c[4:], key_bin)
- encrypted_bin += left + right
- hex_result = ''.join(f"{int(encrypted_bin[i:i+8], 2):02X}" for i in range(0, len(encrypted_bin), 8))
- return hex_result
- def ecb_decrypt(hex_text, key4):
- key_bin = f"{key4:04b}"
- bin_text = ''.join(f"{int(hex_text[i:i+2], 16):08b}" for i in range(0, len(hex_text), 2))
- decrypted = ""
- for i in range(0, len(bin_text), 8):
- left = xor_4bit(bin_text[i:i+4], key_bin)
- right = xor_4bit(bin_text[i+4:i+8], key_bin)
- decrypted += chr(int(left + right, 2))
- return decrypted
- # DATA
- plain_text = "20230100121SibermuKriptografi"
- key = 10 # 4-bit key (decimal)
- # ENKRIPSI
- cipher_hex = ecb_encrypt(plain_text, key)
- # DEKRIPSI
- decrypted_text = ecb_decrypt(cipher_hex, key)
- print(f"Plain Text : {plain_text}")
- print(f"Kunci (4bit) : {key:04b}")
- print(f"Hasil Enkripsi (HEX): {cipher_hex}")
- print(f"Hasil Dekripsi : {decrypted_text}")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement