Advertisement
keselyoleren

Untitled

Jun 21st, 2025
294
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.40 KB | None | 0 0
  1. def str_to_bin(s):
  2.     return ''.join(f'{ord(c):08b}' for c in s)
  3.  
  4. def bin_to_str(b):
  5.     chars = [chr(int(b[i:i+8], 2)) for i in range(0, len(b), 8)]
  6.     return ''.join(chars)
  7.  
  8. def xor_4bit(a, b):
  9.     return f"{int(a, 2) ^ int(b, 2):04b}"
  10.  
  11. def ecb_encrypt(plain_text, key4):
  12.     encrypted_bin = ""
  13.     key_bin = f"{key4:04b}"
  14.     for c in plain_text:
  15.         bin_c = f"{ord(c):08b}"
  16.         left = xor_4bit(bin_c[:4], key_bin)
  17.         right = xor_4bit(bin_c[4:], key_bin)
  18.         encrypted_bin += left + right
  19.     hex_result = ''.join(f"{int(encrypted_bin[i:i+8], 2):02X}" for i in range(0, len(encrypted_bin), 8))
  20.     return hex_result
  21.  
  22. def ecb_decrypt(hex_text, key4):
  23.     key_bin = f"{key4:04b}"
  24.     bin_text = ''.join(f"{int(hex_text[i:i+2], 16):08b}" for i in range(0, len(hex_text), 2))
  25.     decrypted = ""
  26.     for i in range(0, len(bin_text), 8):
  27.         left = xor_4bit(bin_text[i:i+4], key_bin)
  28.         right = xor_4bit(bin_text[i+4:i+8], key_bin)
  29.         decrypted += chr(int(left + right, 2))
  30.     return decrypted
  31.  
  32. # DATA
  33. plain_text = "20230100121SibermuKriptografi"
  34. key = 10  # 4-bit key (decimal)
  35.  
  36. # ENKRIPSI
  37. cipher_hex = ecb_encrypt(plain_text, key)
  38. # DEKRIPSI
  39. decrypted_text = ecb_decrypt(cipher_hex, key)
  40.  
  41. print(f"Plain Text   : {plain_text}")
  42. print(f"Kunci (4bit) : {key:04b}")
  43. print(f"Hasil Enkripsi (HEX): {cipher_hex}")
  44. print(f"Hasil Dekripsi       : {decrypted_text}")
  45.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement