Analisi Dan Perancangan Aplikasi Pesan Rahasia Menggunakan Algoritma One Time PAD (OTP)Dengan Pembangkit Bilangan Acak Linear Congurential Generator (LCG)

BAB 2 LANDASAN TEORI

2.1 Kriptografi

  Kriptografi berasal dari bahasa Yunani, yakni kata kriptos dan graphia. Kriptos berarti

  

secret (rahasia) dan graphia berarti writing (tulisan). Kriptografi merupakan seni dan

  ilmu untuk menjaga keamanan data dengan metode tertentu, dan pelakunya disebut

  

cryptographer . Kriptografi disebut sebagai ilmu karena didalamnya terdapat metode

  (rumusan) yang digunakan, dan dikatakan sebagai seni karena karena dalam membuat suatu teknik kriptografi itu sendiri merupakan ciri tersendiri dari si pembuat dan memerlukan teknik khusus dalam mendisainnya [8]. Sedangkan cryptanalysis adalah suatu ilmu dan seni memecahkan ciphertext menjadi plaintext tanpa melalui cara yang

  .

  seharusnya dan orang yang melakukannya disebut cryptanalyst enkripsi Plaintext Ciphertext dekripsi

Gambar 2.1 Proses - proses kriptografi

  Menurut Request for Comments (RFC), kriptografi merupakan ilmu matematika yang berhubungan dengan transformasi data untuk membuat artinya tidak dapat dipahami (untuk menyembunyikan maknanya), mencegahnya dari perubahan tanpa izin, atau mencegahnya dari penggunaan yang tidak sah. Jika transformasinya dapat dikembalikan, kriptografi juga bisa diartikan sebagai proses mengubah kembali data yang terenkripsi menjadi bentuk yang dapat dipahami. Artinya, kriptografi dapat diartikan sebagai proses untuk melindungi data dalam arti yang luas [11].

  Dalam kamus bahasa Inggris Oxford diberikan pengertian kriptografi sebagai berikut : “Sebuah teknik rahasia dalam penulisan, dengan karakter khusus, dengan menggunakan huruf dan karakter di luar bentuk aslinya, atau dengan metode- metode lain yang hanya dapat dipahami oleh pihak-pihak yang memproses kunci, juga semua hal yang ditulis dengan cara seperti ini.”

  Jadi, secara umum dapat diartikan sebagai seni menulis atau memecahkan cipher [16].

  Algoritma kriptografi selalu terdiri dari dua bagian yaitu fungsi enkripsi dan dekripsi. Bila keamanan algoritma tergantung pada kerahasiaan algoritma bekerja, maka algoritma tersebut dikatakan algoritma terbatas (terbatas kemampuannya) [7]. Algoritma terbatas mempunyai sejarah yang menarik, namun tidak cukup baik untuk digunakan saat ini. Sebagian besar pengguna (yang tidak dalam satu grup) tidak dapat menggunakannya bersama-sama, sehingga setiap kali seorang pengguna meninggalkan grupnya, pemakai lain dalam grup tersebut harus mengganti algoritma agar tidak diketahui kelompok lain. Dan bila salah satu anggota tanpa sengaja menampakkan algoritma keluar grupnya, grup tersebut harus mengganti algoritmanya.

2.2 Komponen Kriptografi

  Pada dasarnya, kriptografi terdiri dari beberapa komponen sebagai berikut [1] : 1.

  Algoritma, merupakan himpunan aturan matematis yang digunakan dalam enkripsi dan dekripsi.

2. Enkripsi, adalah transformasi data ke dalam bentuk yang tidak dapat terbaca tanpa sebuah kunci tertentu.

  3. Dekripsi, merupakan kebalikan dari enkripsi, yaitu transformasi data terenkripsi kembali ke bentuknya semula.

  4. Kunci, digunakan pada saat melakukan enkripsi dan dekripsi. Pada kriptografi modern, keamanan enkripsi tergantung pada kunci, dan tidak tergantung kepada algoritmanya apakah dilihat orang lain atau tidak.

  5. Pesan asli (Plaintext), disebut juga dengan clear-text, merupakan teks asli yang akan diproses menggunakan algoritma kriptografi tertentu untuk menjadi

  ciphertext.

  6. Ciphertext, merupakan pesan yang telah melalui proses enkripsi yang merupakan himpunan karakter acak.

  7. Kriptologi, merupakan studi tentang kriptografi dan kriptanalisis.

  8. Kriptanalisis (Cryptanalysist), merupakan aksi memecahkan mekanisme kriptografi dengan cara menganalisisnya untuk menemukan kelemahan dari suatu algoritma kriptografi sehingga akhirnya dapat ditemukan kunci atau teks asli.

  9. Kriptosistem, adalah perangkat keras atau implementasi perangkat lunak kriptografi yang diperlukan dalam mentransformasi sebuah pesan asli menjadi

  ciphertext dan juga sebaliknya.

2.3 Kunci Simetris dan Asimetris

2.3.1 Kunci Simetris

  Ini adalah jenis kriptografi yang paling umum dipergunakan. Kunci untuk membuat pesan yang disandikan sama dengan kunci untuk membuka pesan yang disandikan itu. Jadi pembuat pesan dan penerimanya harus memiliki kunci yang sama persis.

  Siapapun yang memiliki kunci tersebut termasuk pihak-pihak yang tidak diinginkan dapat membuat dan membongkar rahasia ciphertext. Problem yang paling jelas disini terkadang bukanlah masalah pengiriman ciphertext-nya, melainkan masalah bagaimana menyampaikan kunci simetris tersebut kepada pihak yang diinginkan. Contoh algoritma kunci simetris adalah DES (Data Encryption Standard), RC-2, RC- 4, RC-5, RC-6, TwoFish, Rijndael, International Data Encryption Algorithm (IDEA), Advanced Encryption Standard (AES), One Time Pad (OTP), dan lainnya .

Gambar 2.2 Kunci simetris (Sumber : Herianto, 1999)

  Kelebihan kunci simetris: a.

  Kecepatan operasi lebih tinggi bila dibandingkan dengan algoritma asimetris.

  b.

  Karena kecepatannya yang cukup tinggi, maka dapat digunakan pada sistem

  real-time

  Kelemahan kunci simetris: a.

  Untuk tiap pengiriman pesan dengan pengguna yang berbeda dibutuhkan kunci yang berbeda juga, sehingga akan terjadi kesulitan dalam manajemen kunci tersebut.

  b.

  Permasalahan dalam pengiriman kunci itu sendiri yang disebut “key distribution problem” .

2.3.2 Kunci Asimetris

  Pada pertengahan tahun 70-an Whitfield Diffie dan Martin Hellman menemukan teknik enkripsi asimetris yang merevolusi dunia kriptografi. Kunci asimetris adalah pasangan kunci-kunci kriptografi yang salah satunya dipergunakan untuk proses enkripsi dan yang satu lagi untuk dekripsi. Semua orang yang mendapatkan kunci publik dapat menggunakannya untuk mengenkripsikan suatu pesan, sedangkan hanya satu orang saja yang memiliki rahasia tertentu dalam hal ini kunci privat untuk melakukan pembongkaran terhadap sandi yang dikirim untuknya.

  Dengan cara seperti ini, jika Alice mengirim pesan untuk Bob, Alice dapat merasa yakin bahwa pesan tersebut hanya dapat dibaca oleh Bob, karena hanya Bob yang bisa melakukan dekripsi dengan kunci privatnya. Tentunya Alice harus memiliki kunci publik Bob untuk melakukan enkripsi. Alice bisa mendapatkannya dari Bob, ataupun dari pihak ketiga seperti Eva.

Gambar 2.3 Penggunaan kunci asimetris (Sumber : Herianto, 1999)

  Teknik enkripsi asimetris ini jauh lebih lambat ketimbang enkripsi dengan kunci simetris. Oleh karena itu, biasanya bukanlah pesan itu sendiri yang disandikan dengan kunci asimetris, namun hanya kunci simetrislah yang disandikan dengan kunci asimetris. Sedangkan pesannya dikirim setelah disandikan dengan kunci simetris tadi. Contoh algoritma yang menggunakan kunci asimetris adalah RSA (merupakan singkatan penemunya yakni Rivest, Shamir dan Adleman), Digital Signature

  Algorithm (DSA), Diffie-Hellman, Kriptografi Quantum, ElGamal, dan lainnya.

  Contoh penggunaan, misalkan jaringan komputer menghubungkan komputer karyawan di kantor cabang dengan komputer manejer di kantor pusat. Seluruh kepala cabang diberitahu bahwa kalau mereka mengirim laporan ke manejer di kantor pusat, mereka harus mengenkripsi laporan tersebut dengan kunci publik manajer (kunci publik manajer diumumkan kepada seluruh kepala cabang). Untuk mengembalikan laporan tersandi ke laporan semula, hanya manajer yang dapat melakukan dekripsi, karena hanya dialah yang memegang kunci privat. Selama proses transmisi ciphertext dari kantor cabang ke kantor pusat melalui saluran komunikasi mungkin saja data yang dikirim disadap oleh pihak ketiga, namun pihak ketiga ini tidak dapat mengembalikan ciphertext ke plaintext-nya karena ia tidak mengetahui kunci untuk dekripsi. Kelebihan kunci asimetris: a.

  Masalah keamanan pada distribusi kunci dapat lebih baik b.

  Masalah manajemen kunci yang lebih baik karena jumlah kunci yang lebih sedikit, maksudnya untuk berkorespondensi secara rahasia dengan banyak pihak tidak diperlukan kunci rahasia sebanyak jumlah pihak tersebut, cukup membuat dua buah kunci (disebut public-key) bagi para koresponden untuk mengenkripsi pesan, dan private-key untuk mendekripsi pesan. Kelemahan kunci asimetris: a.

  Kecepatan yang lebih rendah bila dibandingkan dengan algoritma simetris b.

  Untuk tingkat keamanan sama, kunci yang digunakan lebih panjang dibandingkan dengan algoritma simetris.

2.4 Block Cipher dan Stream Cipher

  Jika kita melihat berdasarkan ukuran serta format data yang akan diproses, maka algoritma kriptografi dapat dibagi menjadi dua bagian yang utama yaitu: a.

  Block Cipher, algoritma kriptografi ini bekerja pada suatu data yang berbentuk blok/kelompok data dengan panjang data tertentu (dalam beberapa byte), jadi dalam sekali proses enkripsi atau dekripsi data yang masuk mempunyai ukuran yang sama. Untuk algoritma komputer modern, ukuran blok dasarnya adalah 64 bit atau 128 bit, cukup besar untuk menghindari analisis pemecahan kode dan cukup kecil agar dapat bekerja dengan cepat. Sebelum pemakaian komputer, algoritma biasanya beroperasi pada plaintext, satu karakter per satu operasi. Dapat dikatakan bahwa ini seperti algoritma aliran (stream) yang beroperasi pada aliran karakter. b.

  Stream cipher, algoritma yang dalam operasinya bekerja dalam suatu pesan berupa bit tunggal atau terkadang dalam suatu byte, jadi format data berupa aliran dari bit untuk kemudian mengalami proses enkripsi dan dekripsi.

  Stream cipher adalah sebuah algoritma enkripsi simetris di mana output yang

  dihasilkan ciphertext bit per bit atau byte per byte dari sebuah input plaintext [15]. Yang paling banyak digunakan adalah RC4.

2.5 Tujuan Kriptografi

  Ada empat tujuan mendasar dari kriptografi yang juga merupakan aspek keamanan informasi, yaitu:

  1. Kerahasiaan (Confidentiality), adalah layanan yang digunakan untuk menjaga isi informasi dari siapapun, kecuali yang memiliki kunci rahasia atau otoritas untuk membuka informasi yang telah disandikan.

2. Integritas Data (Message Integrity), berhubungan dengan penjagaan

  (perlindungan data) dari upaya-upaya pengubahan data secara tidak sah. Untuk dapat menjaga integritas data, suatu sistem harus memiliki kemampuan untuk mendeteksi pemanipulasian data yang dilakukan oleh pihak-pihak yang tidak berhak, antara lain penyisipan, penghapusan, dan pendistribusian data lain ke dalam data yang asli.

  3. Autentifikasi (Authentication), berhubungan dengan identifikasi, baik secara kesatuan sistem maupun informasi itu sendiri. Dua pihak yang saling berkomunikasi harus saling memperkenalkan diri. Informasi yang dikirimkan harus diautentikasi keasliannya, isi datanya, waktu pengirimannya dan lain sebagainya.

  4. Nirpenyangkalan (Non-repudiation), merupakan usaha untuk mencegah terjadinya penyangkalan terhadap pengiriman/terciptanya suatu informasi oleh yang mengirimkan/membuat, juga sebaliknya.

2.6 Keamanan Algoritma Kriptografi

  Sebuah algoritma kriptografi dikatakan aman (computationally secure) bila ia memenuhi tiga kriteria berikut [8] :

  1. Persamaan matematis yang menggambarkan operasi algoritma kriptografi sangat kompleks sehingga algoritma tidak mungkin dipecahkan secara analitik.

  2. Biaya untuk memecahkan ciphertext melampaui nilai informasi yang terkandung di dalam ciphertext tersebut.

  3. Waktu yang diperlukan untuk memecahkan ciphertext melampaui lamanya waktu informasi tersebut harus dijaga kerahasiaannya.

2.7 Pembangkit Bilangan Acak

  Pembangkit Bilangan Acak atau Random Number Generator (RNG) adalah suatu peralatan komputasional yang dirancang untuk menghasilkan suatu urutan nilai yang tidak dapat ditebak polanya dengan mudah, sehingga urutan nilai tersebut dapat dianggap sebagai suatu keadaan acak (random). RNG ini tidak dapat diterapkan dalam prakteknya. Bilangan acak yang dihasilkan oleh komputer sekalipun tidak benar-benar acak dan kebanyakan bilangan acak yang diterapkan dalam kriptografi juga tidak benar-benar acak, tetapi hanya berupa acak semu. Ini berarti bahwa bilangan acak yang dihasilkan itu dapat ditebak susunan atau urutan nilainya. Dalam kriptografi, bilangan acak sering dibangkitkan dengan menggunakan pembangkit bilangan acak semu atau Pseudo Random Number Generator (PRNG ).

2.8 Pembangkit Bilangan Acak Semu

  Pembangkit Bilangan Acak Semu atau Pseudo Random Number Generator (PRNG) merupakan suatu algoritma yang menghasilkan suatu urutan nilai dimana elemen- elemennya bergantung pada setiap nilai yang dihasilkan. Output dari PRNG tidak betul-betul acak, tetapi hanya mirip dengan properti dari nilai acak. Hal ini didukung oleh penelitian sebelumnya. [12] menyimpulkan dari beberapa algoritma untuk membangkitkan bilangan acak semu, tidak ada yang benar-benar dapat menghasilkan bilangan acak secara sempurna dalam arti benar-benar acak dan tanpa ada perulangan selama pembangkit yang digunakan adalah komputer yang memiliki sifat deterministik dan bilangan yang benar-benar acak hanya dapat dihasilkan oleh perangkat keras (hardware).

  Menurut [14], pembangkit bilangan acak yang cocok untuk kriptografi dinamakan Cryptographically Secure Pseudorandom Number Generator (CSPRNG). Persyaratan CSPRNG adalah : 1.

  Terlihat acak. Artinya mampu melewati uji statistik keacakan .

  2. Tidak dapat diprediksi. Perhitungan secara komputasional tidak dapat mempengaruhi prediksi bilangan acak selanjutnya yang telah diberikan algoritma secara menyeluruh ataupun dari dibangkitkan dari mesin (komputer).

  3. Tidak mampu diproduksi kembali. Jika pembangkit bilangan acak mampu dibangkitkan dua kali dengan input yang sama akan memperoleh hasil acak yang berbeda satu dengan lainnya. Meskipun demikian, pada dasarnya bilangan acak yang diperoleh bukanlah bilangan acak yang sesungguhnya, maka supaya lebih menyerupai bilangan acak, [4] mengatakan beberapa syarat penting yang harus dipenuhi oleh bilangan acak adalah seperti berikut ini :

  1. Dapat diulang. Sekumpulan (barisan) bilangan yang sama harus bisa diperoleh (diulang) dengan menggunakan seed yang sama, hal ini kadang-kadang diperlukan untuk pemeriksaan dan penelusuran program (debugging).

  2. Keacakan. Barisan bilangan harus memenuhi syarat keacakan secara seragam (uniform) yang dapat diuji melalui uji statistika.

  3. Periode panjang. Karena pada dasarnya bilangan acak itu merupakan barisan berulang dengan berbagai periode, maka periode pengulangan harus sangat besar atau lama melebihi banyaknya bilangan acak yang diperlukan. Tidak peka seed. Sekalipun barisan bilangannya bergantung pada seed tetapi sifat keacakan dan periodisasi sedapat mungkin tidak bergantung pada seed- nya. Secara umum, sebuah PRNG didefinisikan sebagai algoritma kriptografi yang digunakan untuk menghasilkan bilangan secara acak. Pengertian acak sendiri adalah bilangan yang dihasilkan dalam setiap waktu tidaklah sama. Sebuah PRNG memiliki sebuah kondisi awal K yang rahasia. Saat digunakan, PRNG harus membangkitkan output acak yang tidak dapat diidentifikasi oleh kriptanalis yang tidak tahu dan tidak dapat menebak kondisi awal K. Dalam hal ini, PRNG memiliki kesamaan dengan

  

cipher aliran. Akan tetapi, sebuah PRNG harus mampu mengubah kondisi awalnya

  dengan memproses input sehingga tidak dapat diprediksi oleh kriptanalis. Umumnya PRNG memiliki kondisi awal yang tidak sengaja dapat ditebak oleh kriptanalis dan harus mengalami banyak proses sebelum kondisinya rahasia dan aman. Patut dipahami bahwa sebuah input untuk PRNG memiliki informasi rahasia yang tidak diketahui oleh kriptanalis. Input-input ini umumnya diperoleh dari proses-proses fisik, interaksi

  

user dengan mesin, atau proses eksternal lain yang sulit diprediksi. Dalam desain dan

  implementasi harus dapat dipastikan bahwa input-input ini memiliki cukup jaminan keamanan dan kerahasiaan.

  Kebanyakan algoritma dari PRNG ditujukan untuk menghasilkan suatu sampel yang secara seragam terdistribusi. PRNG ini sering digunakan dalam kriptografi pada proses pembentukan kunci dari metode kriptografi. Tingkat kerumitan dari PRNG ini menentukan tingkat keamanan dari metode kriptografi. Semakin rumit PRNG yang digunakan maka semakin tinggi tingkat keamanan dari metoda kriptografi [7].

  .

  Bilangan acak semu

  PRNG

  

Input seed rahasia

Gambar 2.4 Skema Dasar PRNG

  Semua deretan bilangan acak yang dibangkitkan dari rumus matematika, serumit apapun, dianggap sebagai deret acak semu, karena dapat diulang pembangkitannya. Sementara itu, banyak produk software yang dinyatakan sebagai produk yang aman karena menggunakan bilangan acak semacam OTP (One Time

  

Pad ). Namun karena OTP ini dibangkitkan dari bilangan acak semu, maka keamanan

  yang diperoleh juga semu. Pembangkit bilangan acak yang sering diimplementasikan adalah Linier Congruential Generator (LCG) dan Linear Feedback Shift Register (LFSR).

2.9 Linear Congruential Generator (LCG)

  

Linear Congruential Generator (LCG) mewakili salah satu algoritma pseudo random

number yang tertua dan paling populer. Algoritma ini diciptakan oleh D. H. Lehmer

  pada tahun 1951. Teori dari algoritma ini mudah dipahami dan dapat diimplementasikan secara cepat. Hal ini didukung oleh penelitian sebelumnya. [10] menyimpulkan hasil analisis yang diperoleh bahwa dari segi kecepatan LCG membutuhkan waktu yang paling pendek dalam menghasilkan bilangan acak dibandingkan dengan metode lain. Keuntungan dari LCG adalah operasinya yang sangat cepat. LCG dapat didefinisikan dengan rumusan berikut :

   = (a. + b) mod m (2.1) − Dimana : = bilangan acak ke-n dari deretnya

  = bilangan acak sebelumnya

  −1

  a = faktor pengali b = increment m = modulus (batas maksimum bilangan acak) (a, b, dan m semuanya konstanta LCG)

  Penentuan nilai awal atau dan konstanta (a, b, dan m) akan

  −1

  menentukan kualitas bilangan acak yang dihasilkan. Bilangan acak yang baik (pada umumnya) apabila terjadinya perulangan atau munculnya bilangan acak yang sama, dapat terjadi setelah sekian banyak pembangkitan bilangan acak (semakin banyak akan semakin baik) serta tidak bisa diprediksi kapan terjadi perulangannya.

  Periode dari LCG umumnya adalah sebesar nilai m. Masalah pada LCG adalah

  

lower order bit yang digenerasi mempunyai periode yang lebih pendek dari deretan

  secara keseluruhan jika m di-set menjadi pangkat 2. Tanpa desain yang benar, dengan

  

m yang sangat besar, bisa jadi periode bilangan acak yang dihasilkan tidak akan

  maksimal, bahkan mungkin jauh lebih pendek daripada periode maksimalnya. Kunci pembangkit adalah X yang disebut umpan (seed). LCG mempunyai periode tidak lebih besar dari m. Jika a, b, dan m dipilih secara tepat (misalnya b seharusnya relatif prima terhadap m dan b < m ), maka LCG akan mempunyai periode maksimal, yaitu

  m – 1.

  Sebagai contoh : Untuk membangkitkan bilangan acak sebanyak 10 kali dengan a=13, b=7, m=11, dan = 2. Dengan menggunakan rumus pada metode LCG di atas, akan diperoleh hasil sesuai tabel dibawah ini.

  • m = ( .
  • ) mod m

  11

  20

  7

  13

  1

  8

  1

  13 7 111

  9

  8

  7

  8

  11

  85

  7

  13

  11

  9

  6

  11

  Sistem cipher One Time Pad ini tidak dapat dipecahkan karena barisan kunci acak yang ditambahkan ke pesan plaintext yang tidak acak menghasilkan ciphertext yang seluruhnya acak serta panjang kunci harus sama dengan panjang plaintext. Beberapa barisan kunci yang digunakan untuk mendekripsi ciphertext mungkin menghasilkan pesan-pesan plaintext yang mempunyai makna, sehingga kriptanalis tidak punya cara untuk menentukan plaintext mana yang benar. Meskipun One Time

  yang sempurna (perfect secrecy). Satu-satunya algoritma kriptografi sempurna, aman dan tidak dapat dipecahkan adalah One Time Pad [8].

  Cipher yang tidak dapat dipecahkan dikatakan memiliki tingkat kerahasiaan

  Mauborgne. OTP sering disebut “Vernam Cipher”. OTP merupakan algoritma yang relatif gampang untuk dipelajari dan sudah dinyatakan oleh para ahli kriptografi sebagai “perfect encryption algorithm”. [3] sebelumnya pernah melakukan penelitian tentang penggunaan algoritma OTP untuk sistem pengamanan access database server.

  

One Time Pad (OTP) ditemukan pada tahun 1917 oleh G. Vernam dan Major Joseph

  2

  46

  9

  7

  13

  3

  10

  3

  11

  13 7 124

  6

  6

Tabel 2.1 Hasil pembangkitan bilangan acak dengan metode LCG

  7

  7

  7

  13

  2

  11

  33

  13

  7

  2

  1

  −1

  −1

  a b .

  −1

  n

  11

  3

  11

  11

  72

  7

  13

  5

  5

  5

  13 7 137

  7

  10

  4

  10

  11

  98

  7

  13

2.10 One Time Pad (OTP)

  

Pad merupakan cipher yang sempurna aman, namun faktanya ia tidak digunakan

  secara universal dalam aplikasi kriptografi sebagai satu-satunya sistem cipher yang tidak dapat dipecahkan ( hanya sedikit sistem komunikasi yang menggunakan OTP). Malahan orang masih tetap menggunakan sistem cipher yang dapat dipecahkan. Alasannya adalah dari segi kepraktisan, yaitu karena panjang kunci harus sama dengan panjang pesan, maka One Time Pad hanya cocok untuk pesan berukuran kecil.

2.10.1 Proses Enkripsi dan Dekripsi

  Prinsip enkripsi pada algoritma ini adalah dengan mengkombinasikan masing-masing karakter pada plaintext dengan satu karakter pada kunci. Oleh karena itu, panjang kunci harus sama dengan panjang plaintext. Enkripsi dapat dinyatakan sebagai penjumlahan modulo 256 (menggunakan kode ASCII 8 bit) dari satu karakter

  plaintext dengan satu karakter kunci OTP : c i = (p i + k i ) mod 256 (2.2)

  Dalam hal ini, p adalah plaintext ke-i, k adalah kunci ke-i, dan c adalah

  i i i

  huruf ciphertext ke-i. Panjang kunci sama dengan panjang plaintext, sehingga tidak ada kebutuhan mengulang penggunaan kunci selama proses enkripsi. Setelah pengirim mengenkripsikan pesan dengan kunci, ia menghancurkan kunci tersebut. Penerimaan pesan menggunakan kunci yang sama untuk mendekripsikan karakter-karakter

  ciphertext menjadi karakter-karakter plaintext dengan persamaan : p i = (c i - k i ) mod 256 (2.3)

  Sebagai contoh : Sebuah huruf plaintext ‘B’ akan dienkripsi dengan menggunakan kunci ‘I’ (kunci ini masih dipilih sembarang, karena belum menggunakan metode pembangkit bilangan acak, untuk sistem yang akan dibuat selanjutnya, kunci yang terpilih sudah menggunakan metode LCG seperti yang sudah dibahas pada subbab sebelumnya), maka akan menghasilkan sebuah huruf ciphertext sebagai berikut:

  Plaintext : B (66)

  Kunci : I (73)

  Plaintext + kunci : 139 Plaintext + kunci mod 256 : 139 ( ‹ )

  Untuk mendekripsikannya, akan diproses sebaliknya, yaitu :

  Ciphertext : ‹ (139)

  Kunci : I (73)

  Ciphertext - kunci : 66 Ciphertext - kunci mod 256 : 66 (B)