Panduan Lengkap Kriptografi dan Implementasinya di Python

Panduan Lengkap Kriptografi XOR dan Implementasinya di Python

                             Mengenal Kriptografi: Pengertian, Tujuan, dan Jenis-jenisnya

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

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel