Enkripsi yaitu suatu proses pengaman suatu data yang disembunyikan atau proses konversi data ( plaintext ) menjadi bentuk yang tidak dapat dibaca/ dimengerti. Sedangkan Dekripsi yaitu kebalikan dari proses enkripsi yaitu proses konversi data yang sudah dienkripsi ( ciphertext ) kembali menjadi data aslinya ( Original Plaintext ) sehingga dapat dibaca/ dimengerti kembali.
Pesan yang akan dienkripsi disebut plaintext yang dimisalkan plaintext ( P ), proses enkripsi dimisalkan enkripsi ( E ), proses dekripsi dimisalkan dekripsi ( D ), dan pesan yang sudah dienkripsi disebut ciphertext yang dimisalkan ciphertext ( C ) maka dapat digambarkan pada gambar berikut ini :
Berdasarkan cara kerjanya, proses penyandian plaintext menjadi ciphertext dapat dibagi menjadi 2 ( dua ) bagian, yaitu :
a. Stream Cipher
Stream Cipher adalah suatu sistem dimana proses enkripsi dan dekripsinya dilakukan dengan cara bit per bit. Pada algoritma kriptografi aliran ( Stream Cipher ) ini aliran bit kuncinya dihasilkan oleh suatu pembangkit bilangan acak. Aliran kunci ini dikenakan operasi XOR dengan aliran bit-bit dari plaintext untuk dapat menghasilkan aliran bit-bit ciphertext. Pada proses dekripsi aliran bit ciphertext dikenakan operasi XOR dengan aliran bit kunci yang identik untuk dapat menghasilkan plaintext.
Keamanan dari sistem ini tergantung dari pembangkit kunci, jika pembangkit kunci menghasilkan aliran bit-bit 0, maka ciphertext yang dihasilkan akan sama dengan plaintext, sehingga seluruh operasi akan menjadi tidak berguna, maka dari itu dibutuhkan sebuah pembangkit kunci yang dapat menghasilkan aliran bit-bit kunci yang acak dan tidak berulang. Semakin acak aliran kunci yang dihasilkan oleh pembangkit kunci, maka ciphertext akan semakin sulit dipecahkan.
Algoritma kriptografi aliran ( Stream Cipher ) dapat dilihat seperti pada gambar di bawah ini :
Keamanan dari sistem ini tergantung dari pembangkit kunci, jika pembangkit kunci menghasilkan aliran bit-bit 0, maka ciphertext yang dihasilkan akan sama dengan plaintext, sehingga seluruh operasi akan menjadi tidak berguna, maka dari itu dibutuhkan sebuah pembangkit kunci yang dapat menghasilkan aliran bit-bit kunci yang acak dan tidak berulang. Semakin acak aliran kunci yang dihasilkan oleh pembangkit kunci, maka ciphertext akan semakin sulit dipecahkan.
Algoritma kriptografi aliran ( Stream Cipher ) dapat dilihat seperti pada gambar di bawah ini :
b. Block Cipher
Sistem block cipher mengkodekan data dengan cara membagi plaintext menjadi per block dengan ukuran yang sama dan tetap, kemudian setiap bloknya dienkripsi atau didekripsi sekaligus. Cara ini bekerja lebih cepat karena plaintext dibagi atas beberapa blok. Proses enkripsi dan dekripsi ini biasanya dilakukan dalam ukuran blok tertentu.
Transposisi merupakan contoh dari penggunaan block cipher. Pada transposisi kolumnar dengan menggunakan matriks, pesan diterjemahkan sebagai satu blok. Ukuran blok yang dibutuhkan tidak memiliki kesamaan dengan ukuran sebuah karakter. Block Cipher bekerja pada blok plaintext dan menghasilkan blok-blok ciphertext. Gambar Block Cipher dapat dilihat pada gambar di bawah ini.
Transposisi merupakan contoh dari penggunaan block cipher. Pada transposisi kolumnar dengan menggunakan matriks, pesan diterjemahkan sebagai satu blok. Ukuran blok yang dibutuhkan tidak memiliki kesamaan dengan ukuran sebuah karakter. Block Cipher bekerja pada blok plaintext dan menghasilkan blok-blok ciphertext. Gambar Block Cipher dapat dilihat pada gambar di bawah ini.