2. C adalah himpunan ciphertext,
3. K atau ruang kunci keyspace, adalah himpunan kunci,
4. E adalah himpunan fungsi enkripsi ek : P → C ,
5. D adalah himpunan fungsi dekripsi dk : C → P ,
6. Untuk setiap k
∈ K terdapat ek ∈ E dan dk ∈ D. Setiap ek : P → C dan dk : C
→ P merupakan fungsi sedemikian hingga dkekx = x, untuk setiap plaintext x
∈ P .
Sistem kriptografi terdiri dari sebuah algoritma, seluruh kemungkinan plaintext, ciphertext dan kunci-kuncinya. Sistem kriptografi merupakan
suatu fasilitas untuk mengkonversikan plaintext menjadi ciphertext, dan sebaliknya.
2.5 Algoritma ElGamal
Algoritma ElGamal merupakan algoritma kriptografi asimetris yang pertama kali dipublikasikan oleh Taher ElGamal pada tahun 1985.
Algoritma ini didasarkan atas masalah logaritma diskrit pada grup bilangan prima. Kekuatan algoritma ElGamal terletak pada kesulitan
penghitungan logaritma diskret pada bilangan modulo prima yang besar sehingga upaya untuk menyelesaikan masalah logaritma ini menjadi
sangat sukar. Algoritma ElGamal tidak dipatenkan, tetapi algoritma ini didasarkan pada
algoritma Diffie – Hellman, sehingga hak paten algoritma Diffie –
Hellman juga mencakup algoritma ElGamal. Karena hak paten algoritma Diffie
– Hellman berakhir pada bulan April 1997, maka algoritma
ElGamal dapat diimplementasikan untuk aplikasi komersil. Algoritma ElGamal terdiri dari tiga proses, yaitu proses pembentukan kunci, proses
enkripsi dan proses dekripsi. Algoritma ini merupakan cipher blok, yaitu melakukan proses enkripsi pada blok-blok plainteks dan menghasilkan
blok-blok cipherteks yang kemudian dilakukan proses dekripsi, dan hasilnya digabungkan kembali menjadi pesan yang utuh dan dapat
dimengerti. Bilangan prima p dibutuhkan untuk membentuk sistem kriptografi ElGamal Mulya, 2013.
2.6 Algoritma Massey-Omura
Massey-Omura Cryptosystem adalah salah satu cryptosystem kunci publik yang berdasarkan pada logaritma diskrit. Diusulkan oleh James Massey
dan Jim K. Omura pada tahun 1982 sebagai pengembangan atas Three Pass Protocol oleh Shamir pada tahun 1980, dimana pengirim dan
penerima tidak bertukar kunci namun protocol ini memerlukan pengirim dan penerima yang memiliki dua kunci untuk mengenkripsi dan
mendekripsi pesan Yan, 2013.
2.7 Running Time
Running time merupakan waktu yang dibutuhkan untuk mengeksekusi setiap instruksi di dalam program sampai selesai. Didalam program
terdapat beberapa operasi yaitu penambahan +, pengurangan -, perkalian , pembagian , return pengembalian nilai dari fungsi,
inisialisasi, dan perbandingan dimana setiap operasi ini running time masing-masing 1 unit Weiss, 2007.