Panduan Lengkap Kriptografi dan Implementasinya di Python
Panduan Lengkap Kriptografi XOR dan Implementasinya di Python

Kriptografi adalah salah satu bidang penting dalam dunia keamanan digital. Salah satu metode yang sederhana tetapi efektif dalam kriptografi adalah penggunaan operasi XOR (Exclusive OR). Dalam artikel ini, kita akan memahami cara kerja kriptografi XOR, membagi ciphertext ke dalam blok, serta mengonversi data biner ke format hexadecimal. Semua ini akan dijelaskan dengan implementasi Python yang mudah dipahami.
Apa Itu Kriptografi XOR?
Kriptografi XOR menggunakan operasi logika Exclusive OR untuk mengenkripsi dan mendekripsi data. Operasi XOR bekerja pada dua bit, menghasilkan:
· 1 jika kedua bit berbeda (misalny a: 1 XOR 0 = 1).
· 0 jika kedua bit sama (misalnya : 1 XOR 1 = 0).
Karena sifatnya yang simetris, operasi XOR digunakan untuk enkripsi dan dekripsi:
· Enkripsi: ciphertext = plaintext XOR key
· Dekripsi: plaintext = ciphertext XOR key
Kenapa XOR Digunakan?
1. Kesederhanaan: Mudah diimplementasikan dalam berbagai bahasa pemrograman.
2. Efisiensi: Operasi bitwise seperti XOR sangat cepat.
3. Keamanan: Dengan kunci acak dan panjang yang sama seperti plaintext, XOR dapat menjadi metode yang sangat aman.
Namun, jika kunci tidak dijaga kerahasiaannya, metode ini dapat dengan mudah dipecahkan.
Implementasi Python untuk Kriptografi XOR
Berikut adalah implementasi sederhana untuk enkripsi, dekripsi, pembagian blok, dan konversi data ke hexadecimal.
Kode Python Lengkap
def xor_encrypt_decrypt(plaintext, key):
"""
Melakukan enkripsi atau dekripsi menggunakan operasi XOR.
:param plaintext: String biner plaintext atau ciphertext.
:param key: String biner key dengan panjang sama seperti plaintext.
:return: String biner hasil XOR.
"""
if len(plaintext) != len(key):
raise ValueError("Panjang plaintext dan key harus sama.")
# XOR setiap bit dari plaintext dan key
result = ''.join(str(int(p) ^ int(k)) for p, k in zip(plaintext, key))
return result
def split_into_blocks(data, block_size):
"""
Membagi string biner menjadi blok-blok kecil.
:param data: String biner (plaintext, ciphertext, atau key).
:param block_size: Ukuran tiap blok (misal: 3 atau 4).
:return: List blok biner.
"""
return [data[i:i + block_size] for i in range(0, len(data), block_size)]
def binary_to_hex(binary):
"""
Mengonversi string biner ke representasi hex.
:param binary: String biner.
:return: String hex.
"""
return hex(int(binary, 2))[2:].upper() # Menghapus prefix '0x' dan mengubah ke huruf besar
# Input
plaintext = "100100110" # Plaintext asli
key = "010110011" # Key acak dengan panjang sama
# Enkripsi
ciphertext = xor_encrypt_decrypt(plaintext, key)
print("Ciphertext (binary):", ciphertext)
print("Ciphertext (hex):", binary_to_hex(ciphertext))
# Membagi ciphertext menjadi blok
block_size_3 = split_into_blocks(ciphertext, 3)
block_size_4 = split_into_blocks(ciphertext, 4)
print("Ciphertext dibagi menjadi blok 3-bit (binary):", block_size_3)
print("Ciphertext dibagi menjadi blok 4-bit (binary):", block_size_4)
# Konversi tiap blok ke notasi hex
block_size_3_hex = [binary_to_hex(block) for block in block_size_3]
block_size_4_hex = [binary_to_hex(block) for block in block_size_4]
print("Ciphertext dibagi menjadi blok 3-bit (hex):", block_size_3_hex)
print("Ciphertext dibagi menjadi blok 4-bit (hex):", block_size_4_hex)
# Dekripsi
decrypted_text = xor_encrypt_decrypt(ciphertext, key)
print("Decrypted Plaintext (binary):", decrypted_text)
print("Decrypted Plaintext (hex):", binary_to_hex(decrypted_text))
Penjelasan Kode
1. Fungsi XOR untuk Enkripsi dan Dekripsi
Fungsi xor_encrypt_decrypt mengimplementasikan operasi XOR pada plaintext dan key. Keduanya harus memiliki panjang yang sama. Hasilnya adalah ciphertext untuk enkripsi atau plaintext untuk dekripsi.
2. Membagi Ciphertext Menjadi Blok
Fungsi split_into_blocks membagi string biner menjadi beberapa blok kecil berdasarkan ukuran yang diinginkan (misalnya, 3-bit atau 4-bit).
3. Konversi Biner ke Hexadecimal
Fungsi binary_to_hex mengonversi data biner ke format hexadecimal agar lebih mudah dibaca.
Hasil Program
Input:
plaintext = "100100110"
key = "010110011"
Output:
Ciphertext (binary): 110010101
Ciphertext (hex): 195
Ciphertext dibagi menjadi blok 3-bit (binary): ['110', '010', '101']
Ciphertext dibagi menjadi blok 4-bit (binary): ['1100', '1010', '1']
Ciphertext dibagi menjadi blok 3-bit (hex): ['6', '2', '5']
Ciphertext dibagi menjadi blok 4-bit (hex): ['C', 'A', '1']
Decrypted Plaintext (binary): 100100110
Decrypted Plaintext (hex): 126
Kesimpulan
Dengan menggunakan metode XOR, kita dapat dengan mudah mengenkripsi dan mendekripsi data dengan kunci sederhana. Fitur tambahan seperti pembagian ciphertext menjadi blok dan konversi ke hexadecimal membuat metode ini lebih fleksibel dan mudah dianalisis.
Penting: Agar metode ini aman, kunci (key) harus bersifat acak dan hanya diketahui oleh pengirim dan penerima. Tanpa ini, keamanan metode XOR sangat lemah.
Belum ada Komentar untuk "Panduan Lengkap Kriptografi dan Implementasinya di Python"
Posting Komentar