## JEPIN
(Jurnal Edukasi dan Penelitian Informatika)
ISSN(e): 2548-9364 / ISSN(p) : 2460-0741

## Aplikasi Pengaman Dokumen Digital Menggunakan Algoritma Kriptografi Hybrid dan Algoritma Kompresi Huffman
Febri Dwinata Yonathan #1 , Helfi Nasution *2 , Heri Priyanto #3
# Jurusan Informatika Universitas Tanjungpura JL Prof Dr H Hadari Nawawi, Pontianak, Kalimantan Barat
1 fsembiringpelawi@gmail.com
2 helfi_nasution@yahoo.com
3 Heripriyanto.stmt@informatics.untan.ac.id
Abstrak — Informasi  merupakan  kebutuhan  yang  penting bagi manusia. Dokumen teks adalah salah satu media untuk menyampaikan  informasi.  Informasi  bersifat  penting sehingga  dibutuhkan  keamanan  tingkat  tinggi.  Pada dokumen  digital  dilakukan  usaha  untuk  kompresi  data untuk  bertujuan  mempercepat  pengiriman  data  maupun memperkecil  ruang  penyimpanan  data.  Maka  dari  itu, dibuatlah aplikasi pengaman dokumen digital menggunakan algoritma  kriptografi  asimetri  dan  simetri  serta  algoritma kompresi  Huffman.  Algoritma  kriptografi  simetri  yang digunakan  adalah  algoritma Vernam  cipher yang  kunci enkripsi  dan  dekripsi  adalah  sama.  Algoritma  kriptografi asimetri yang digunakan adalah algoritma  RSA yang dapat menutupi  kelemahan  dari  algoritma  simetri,  karena memiliki  kunci  yang  masing-masing  berbeda  baik  untuk enkripsi  maupun  dekripsi.  Disamping  itu,  untuk  kompresi data  digunakan  algoritma  kompresi  Huffman  yang  bersifat lossless untuk  mengatasi  masalah  ukuran  dokumen  digital. Kombinasi  antara  algoritma  kriptografi  dengan  algoritma kompresi  menghasilkan  dokumen  yang  tidak  dapat  dibaca oleh  pihak  yang  tidak  berhak  serta  menghasilkan  dokumen dengan ukuran yang kecil sehingga ruang penyimpanan dan waktu pengiriman lebih efisien. Berdasarkan hasil pengujian, lama proses enkripsi maupun dekripsi dipengaruhi  oleh  ukuran  data  dokumen.  Setiap  dokumen yang  dienkripsi  mengalami  penambahan  ukuran  data seperti  dapat  dilihat  pada  salah  satu  contoh  kasus  dimana ukuran  awal  dokumen  4.657 byte menjadi  7.500 byte ketika setelah  dienkripsi.  Pada  algoritma  kompresi  Huffman, terjadi  pengurangan  ukuran  seperti  pada  contoh  kasus dokumen  yang  memiliki  ukuran  awal  4.080 byte setelah dikompres ukurannya menjadi 2.629 byte . .
Kata kunci — Kriptografi, Kompresi, Vernam Cipher, RSA, Huffman

## I. P ENDAHULUAN
Informasi merupakan suatu kebutuhan penting di dalam kehidupan manusia. Manusia mengolah dan menggunakan informasi untuk mencapai suatu tujuan yang berguna  bagi mereka. Teknologi zaman sekarang yang telah
berkembang  dengan  pesat  mengakibatkan  perubahan bentuk dari informasi itu sendiri yang dulu berbentuk fisik, kini  hadir  dalam  bentuk  digital.  Karena  semakin  mudah untuk  memperoleh  informasi,  masalah  keamanan  dan kerahasiaan  menjadi  aspek  penting.  Suatu  usaha diupayakan  untuk  melindungi  isi  informasi  dari  pihak yang tidak memiliki hak akses informasi.
Kriptografi  adalah  ilmu  di  bidang  komputer  yang memiliki tujuan untuk mengamankan data [1]. Kriptografi dapat  diterapkan  sebagai  upaya  dalam  mengamankan informasi pada dokumen digital untuk menjaga integritas, keaslian  entitas,  dan  keaslian  data.  Pada  era  digital sekarang, digunakan kriptografi modern yang menggunakan komputer dikarenakan algoritma beroperasi dalam  mode  bit  dimana  seluruh  informasi  atau  data dinyatakan dalam string bit biner 0 dan 1.
Berdasarkan  kunci  kriptografi,  terdapat  dua  jenis algoritma  yaitu  algoritma  kriptografi  asimetri  dan  simetri [2].    Algoritma  kriptografi  simetri  merupakan  algoritma yang  menggunakan  satu  kunci  yang  sama  untuk melakukan proses enkripsi maupun dekripsi.  Kerahasiaan kunci  menjadi  hal  yang  penting  untuk  keamanan algoritma  simetri.  Kelemahan  dari  algoritma  simetri terletak pada pendistribusian kunci, sehingga ketika kunci diketahui  oleh  pihak  lain  yang  tidak  memiliki  hak,  maka informasi  dengan  mudah  diketahui.  Algoritma  asimetri memiliki  dua  kunci  yang  berbeda  untuk  enkripsi  dan dekripsi.  Pada  algoritma  asimetri  memiliki  kunci  publik dan  kunci  privat  yang  memiliki  kegunaanya  masing- masing.  Kunci  publik  digunakan  untuk  enkripsi, sedangkan  kunci  privat  digunakan  untuk  dekripsi.  Pada kunci publik, kunci dapat digunakan oleh siapa saja, tetapi kunci  privat  hanya  digunakan  satu  pihak  tertentu. Algoritma Hybrid adalah algoritma yang mengkombinasikan  algoritma  asimetri  dan  simetri. Algoritma  asimetri  dapat  menutupi  kekurangan  dari algoritma simetri yang memerlukan pengamanan khusus.
Ada banyak  algoritma yang  digunakan  untuk mengamankan  data  atau  informasi,  diantaranya  adalah algoritma  kriptografi  asimetri  RSA  dan  algoritma kriptografi  simetri  Vernam  Cipher  ( One  Time  Pad ). Algoritma  RSA  merupakan  algoritma  kriptografi  yang fungsi  matematis  menggunakan  bilangan  prima  sehingga sangat  sulit  dipecahkan.[3].  Algoritma  Vernam Cipher ( One  Time  Pad )  merupakan  suatu  metode  yang  dikenal kuat,  karena  panjang  kunci  harus  sama  dengan  panjang dari  data  yang  dienkripsi.  Kunci  pada  Vernam Cipher hanya  bisa  digunakan  satu  kali  untuk  setiap  proses. Semakin panjang data yang dienkripsi semakin sulit kunci yang  dipakai  untuk  diketahui[4].  Kombinasi  antara algoritma  RSA  dan  Vernam  Cipher  dapat  digunakan untuk  membangun  sistem  untuk  pengamanan  berkas  atau dokumen digital dengan melakukan enkripsi dua kali pada dokumen tersebut.
Selain  pengamanan  data,  sekarang  juga  diupayakan proses untuk memadatkan data atau kompresi data dengan bertujuan untuk dapat mempercepat pengiriman data atau informasi. Proses pengiriman lebih cepat disebabkan, data yang  dikompresi  memliki  ukuran  data  yang  lebih  kecil serta  ruang  penyimpanan  yang  dibutuhkan  juga  relatif lebih kecil.
Kompresi  data  merupakan  sebuah  proses  untuk memperkecil  ukuran  data  dari  ukuran  data    yang sebenarnya.  Tujuan  dari  kompresi  data  itu  sendiri  adalah untuk  efisiensi  dalam  waktu  pengiriman  dan  ruang penyimpanan  data.  Terdapat  dua  jenis  teknik  kompresi data, yaitu kompresi lossless dan lossy.
Dokumen  digital  teks  ketika  dikompresi  tidak  boleh mengalami  pengurangan  informasi,  maka  kompresi dilakukan dengan menggunakan teknik lossless . Kompresi Huffman  merupakan  salah  satu  algoritma  kompresi dengan  menggunakan  teknik lossless yang  mana  metode ini,  dapat  mengembalikan  data  yang  telah  terkompresi seperti semula tanpa ada informasi yang hilang.
Berdasarkan  permasalahan  yang  telah  dipaparkan, maka akan dibangun sebuah  aplikasi pengaman dokumen digital  yang  mengimplementasikan  kombinasi  algoritma kriptografi  RSA  dan  Vernam  Chiper,  serta  algoritma kompresi Huffman.

## II. T INJAUAN P USTAKA

## A. Kriptografi
Kriptografi  merupakan  sebuah  ilmu  komputer  yang mempelajari  teknik-teknik  matematika  dengan  tujuan memenuhi layanan keamanan yang adalah confidentiality, authentication,  integrity dan non-repudiation [5].  Pesan ( message )  merupakan  informasi  yang  dapat  dibaca  atau dimengerti  isinya.  Teks,  citra  ( image ),  suara,  dan  video merupakan  bentuk  dari  suatu  informasi  baik  yang berbentuk  digital  maupun  analog.  Pesan  yang  memiliki informasi  dengan  hak  akses  oleh  pihak  tertentu  perlu diamankan. Salah satu pengamanan pesan tersebut  adalah dengan  menyandikan  isi  informasi,  sehingga  pihak  lain tidak  mengerti  isi  dari  informasi  tersebut  [6]. Ciphertext
merupakan  sebuah  pesan  yang  telah  disandikan.  Skema umum kriptografi dapat dilihat Gambar 1.
Pada  kriptografi  terdapat  istilah-istilah  penting,  yaitu [1]:
1. Plaintext , pesan yang berisikan informasi asli.
2. Ciphertext ,  pesan  asli  yang  terenkripsi  sehingga memiliki  informasi  yang  tidak  dapat  dimengerti atau telah diacak.
3. Enkripsi,  proses  mengubah plaintext menjadi ciphertext.
4. Dekripsi,  proses  mengubah ciphertext menjadi plaintext .

## Gambar. 1 Urutan proses kriptografi
Tujuan  dari  kriptografi  adalah  memberikan  layanan sebagai berikut [7] :
1. Kerahasiaan.    Menggunakan  teknik  enkripsi  untuk menjaga  isi pesan sehingga tidak dapat dibaca oleh pihak yang tidak memiliki otoritas.
2. Otentikasi.  Layanan  yang  dapat  megidentifikasi antara dua pihak yang saling berkomunikasi. Kedua pihak tersebut harus dapat mengenali satu sama lain sehingga tujuan dan asal informasi jelas.
3. Integritas.  Layanan  yang  menjamin  bahwa  pesan belum  pernah  diubah  atau  dimodifikasi  dari  sejak pengiriman sampai informasi belum dibuka.
4. Anti  penyangkalan.  Mencegah  setiap  pihak  yang berkomunikasi melakukan penyangkalan baik pihak pengirim  maupun  penerima.  Pengirim  tidak  dapat membantah  belum  mengirim  pesan  dan  penerima pesan  tidak  dapat  membantah  belum  menerima pesan.

## B. Algoritma Kriptografi Asimetri
Kriptografi  algoritma  asimetri  memiliki  kunci  enkripsi dan kunci dekripsi yang berbeda. Sifat dari kunci enkripsi bersifat  tidak  rahasia,  artinya  bersifat  umum  kepada semua  pengguna,  sedangkan  sifat  dari  kunci  dekripsi bersifat rahasia. Istilah lain dari algoritma asimetri adalah kriptografi  kunci  publik  ( public-key  cryptography ). Dibutuhkan  kunci  publik  dan  kunci  privat  yang  telah ditentukan  terlebih  dahulu  untuk  digunakan  oleh  pihak yang saling berkomunikasi. Pengirim pesan mengenkripsi pesan  menggunakan  kunci  publik  sedangkan  penerima pesan  akan  mendekripsikan ciphertext yang  dikirim dengan  menggunakan  kunci  privat.  Dapat  dianalogikan dengan  kotak  surat,  dimana  secara  umum  kotak  surat dapat digunakan oleh siapa saja, namun kotak surat hanya bisa dibuka oleh pemilik kotak surat. Kunci publik dalam contoh  ini  adalah  alamat  dari  kotak  surat,  dan  siapa  saja dapat mengetahuinya karena bersifat publik. Kunci privat
adalah  kunci  kotak  surat  yang  bersifat  sangat  rahasia  dan hanya  dimiliki  oleh  si  pemilik  kotak  surat.  Keuntungan dari kriptografi asimetri adalah tidak ada kebutuhan untuk mendistribusikan kunci yang bersifat rahasia (kunci privat) sehingga  tidak  masalah  ketika  kunci  publik  dikirim menggunakan  jalur  umum  yang  keamanannya  kurang terjamin.  Keuntungan  yang  lain  adalah  dapat  menekan jumlah kunci. Kunci privat tidak perlu dibutuhkan banyak walaupun digunakan untuk berkomunikasi dengan banyak orang.  Cukup  membuat  dua  buah  kunci  saja.  Kelemahan dari  kriptografi  asimetri  adalah  waktu  pemrosesan  yang lama  dibandingkan  dengan  kriptografi  simetri  karena pembangkitan kunci menggunakan bilangan yang kompleks.  Contoh  algoritma  asimetri  adalah  RSA, Elgamal, DSA, Diffie-Hellman, Elliptic Curve Cryptography , McEliece dan sebagainya [6].

## C. Algoritma Kriptografi Simetri
Kriptografi  simetri  memiliki  sebutan  lain  yaitu kriptografi kunci-privat ( private-key cryptography ), kriptografi  kunci  rahasia  ( secret-key  cryptography )  ,  atau kriptografi  konvensional  ( conventional  cryptography ). Kunci  enkripsi  yang  digunakan  pada  alogritma  simetri sama  dengan  kunci  dekripsi,  yang  berarti  algoritma  ini hanya  menggunakan  satu  buah  kunci.  Kriptografi  simetri dapat  dianalogikan  dengan  sebuah  kotak,  gembok  dan kunci  gembok.  Misalkan  A  ingin  mengirim  sebuah  surat kepada  B  dengan  menggunakan  sebuah  kotak  sebagai media  untuk  menyimpan  surat  tersebut  dengan  kondisi dimana A dan B sama sama memiliki kunci gembok yang sama.  A  memasukkan  surat  ke  dalam  kotak,  dan menggembok  kotak  tersebut  sehingga  orang  lain  tidak dapat membacanya. Proses menaruh pesan kedalam kotak dan  menguncinya  ini  dinamakan  enkripsi.  Kemudian kotak yang berisikan surat itu dikirim ke B. Ketika kotak sampai  di  tangan  B,  B  membuka  kotak  dengan menggunakan  kunci  gembok  lalu  membaca  surat  di dalamnya.  Proses  ini  dinamakan  dekripsi.  Kelemahan kriptografi  simetri  terletak  pada  pendistribusian  kunci karena  kunci  untuk  enkripsi  dan  dekripsi  sama,  sehingga pengirim dan penerima harus bekerja sama sehingga kunci tidak  diketahui  orang  lain.  Contoh  algoritma  simetri adalah  alogritma Cipher Hill, One-Time  Pad (Vernam Cipher), Twofish  cipher , Magenta ,  DES, Triple -DES, AES, Blowfish , IDEA, Serpent , RC4, RC5, dan RC6 [6].

## D. Algoritma RSA
Algoritma RSA  adalah  salah satu algoritma kriptografi asimetris  atau  kunci  publik  yang  ditemukan  oleh  tiga orang  peneliti  bernama  Ron  Rivest,  Adi  Shamir,  dan Leonard  Adleman  pada  tahun  1977  [8].  Konsep  bilangan prima  dan  aritmetika  modulo  merupakan  fondasi  pada proses  enkripsi  dan  dekripsi.  Kunci  publik  digunakan untuk proses enkripsi dan bersifat umum, sedangkan kunci privat  digunakan  untuk  proses  dekripsi  dan  bersifat rahasia.  Kunci  dekripsi  pada  algoritma  RSA  dihasilkan dengan  melakukan  pemfaktoran  bilangan  bulat  menjadi bilangan  prima.  Semakin  kuat  algoritma  RSA  didasari
oleh  besarnya  bilangan  yang  akan  difaktorkan.  Semakin besar  bilangan  maka  semakin  sulit  pemfaktoran  namun waktu yang dibutuhkan juga lama.
RSA menggunakan besaran-besaran seperti berikut [9]:  p  = bilangan prima (rahasia)
 q = bilangan prima (rahasia)
 n = p * q (tidak rahasia)   ( n ) = ( p -1)*( q -1) (rahasia)  e = kunci enkripsi (tidak rahasia)  d = kunci dekripsi (rahasia)  m = plaintext (rahasia)  c = ciphertext (tidak rahasia) Rumus untuk enkripsi : E e ( m ) = c = m e mod n (1)
Rumus untuk dekripsi :
D d ( c ) = m = c d mod n (2)
E. Algoritma Vernam Cipher
Algoritma  Vernam Cipher adalah  salah  satu  algoritma kriptografi  simetri  yang  panjang  kunci  adalah  sama dengan  panjan  dari plaintext serta  memiliki  kunci  yang sama  untuk  enkripsi  maupun  dekripsi  [10].  Algoritma ditemukan  oleh  Gilbert  Vernam  dan  Major  Joseph Mauborgne pada tahun 1917.
Proses  enkripsi  pada  algoritma  Vernam Cipher menggunakan teknik stream cipher yang berasal dari hasil operasi XOR antara bit plaintext dan bit kunci[12]. Rumus untuk  melakukan  enkripsi  adalah    E i =  (P i +  K i )  mod  26, dan untuk melakukan dekripsi adalah P i = (E i - K i ) mod 26. Sebagai  contoh  bila  diketahui plaintext adalah “INFORMATIKA”  dengan  kunci  “SJNGBCTSMFX  ” dan  setiap  huruf  dikodekan  A=0,  B=1,….,Z=  25,  maka akan diperoleh ciphertext sebagai berikut : E 1 = (I + S) mod 26   = A E 2 = (N + J) mod 26  = W E 3 = (F + N) mod 26  = S E 4 = (O + G) mod 26  = U E 5 = (R + B) mod 26  = S E 6 = (M + C) mod 26  = O E 7 = (A + T) mod 26  = T E 8 = (T + S) mod 26   = L E 9 = (I + M) mod 26   = U E 10 = (K + F) mod 26  = P E 11 = (A + X) mod 26 = X Ciphertext = “AWSUSOTLUPX ”
Kunci  dibangkitkan  secara  acak,  kemudian  digunakan tidak  lebih  dari  satu  kali.  Algoritma  Vernam Cipher juga dikenal  sebagai  algoritma  kriptografi  yang  tidak  dapat dipecahkan  karena  setiap  penyerang  yang  mencoba memecahkan ciphertext harus menguji setiap kemungkinan  kunci  yang  dibangkitkan,  sehingga  sangat sulit  dilakukan  ketika  berhadapan  dengan  isi plaintext yang sangat panjang [11].

## F. Kompresi Data
Kompresi  data  adalah  proses  pemampatan  suatu  data dengan  cara  melakukan encode bit  dari  pembawa informasi  yang  lebih  rendah  dibandingkan  dengan
representasi  data  yang  tidak  terkodekan  dengan  sistem encoding tertentu  yang  menghasilkan  data  yang  lebih kecil  dan  dapat  mempercepat  waktu  transmisi  data  atau pertukaran data[13]. Pada penggunaan algoritma kompresi, pengirim  data  dan  penerima  data  harus  menggunakan algoritma  yang  sama  sehingga  teknik  kompresi  dan dekompresi  untuk  memproses  data  adalah  sama,  serta menghasilkan  data  yang  sesuai  dengan  yang  diharapkan [14].  Tujuan  dari  kompresi  data  itu  sendiri  adalah  untuk memperkecil suatu data digital tetapi tetap mempertahankan isi dari data tersebut.

## G. Algoritma Kompresi Huffman
Algoritma  Huffman  adalah  suatu  algoritma  kompresi dengan metode lossless tertua yang ditemukan oleh David Huffman  pada  tahun  1950  dengan  konsep  dasarnya  yaitu membangun  kode  dengan  representasi  bit  yang  lebih pendek  untuk  setiap  karakter  yang  frekuensi  kemunculan lebih  banyak  dan  membangun  kode  representasi bit yang lebih panjang untuk karakter yang frekuensi kemunculannya lebih sedikit [15].
Tahapan-tahapan  proses  kompresi  algoritma  Huffman adalah:
1. Hitung  banyak  jenisnya  karakter  dan  jumlah  dari karakter pada sebuah dokumen.
2. Susun  setiap  jenis  karakter  urutan  jenis  karakter dengan  frekuensi  kemunculan  dari  terkecil  ke terbesar.
3. Membentuk  pohon  biner  berdasarkan  urutan karakter  dari  yang  frekuensi  terkecil  ke  yang terbesar.
4. Ganti karakter yang ada dengan menggunakan kode bit berdasarkan pohon biner.
5. Simpan  jumlah  bit  untuk  kode  bit  yang  terbesar, jenis  karakter  yang  diurutkan  dari  frekuensi keluarnya terbesar ke terkecil beserta karakter yang sudah  berubah  menjadi  kode  bit  sebagai  hasil kompresi.
Dalam  penerapannya,  digunakan  metode  yang  spesifik untuk  mewakili  atau  merepesentasikan  tiap-tiap  simbol, sehingga  menghasilkan prefix-free  code ( string bit representasi  simbol  tidak  pernah  menjadi prefix dari simbol  lain)  yang  mewakili  karakter  yang  frekuensi kemunculannya  lebih  besar  dengan  bit string yang  lebih pendek  daripada  karakter  yang  frekuensi  kemunculannya lebih  kecil  di  dalam  suatu  sumber  data  [16].  Flowchart Huffman encoding dapat dilihat pada Gambar 2.
Algoritma  kompresi  Huffman  menerapkan  konsep pohon  biner  (contoh  pohon  biner  dapat  dilihat  pada Gambar 3). Pohon biner atau pohon Huffman memiliki  2 buah  simpul  pada  setiap  cabang.  Pada  pembuatan  pohon Huffman,  untuk  setiap  cabang  kiri  diberi  nilai  0 sedangkan  setiap  cabang  kanan  diberi  nilai  1.  Kode huffman  kemudian  didapat  dengan  membaca  kode-kode dari  daun  sampai  ke  akar  pohon.  Setelah  kode  Huffman terbentuk,  data  yang  telah  dimasukkan  akan  di- encode dengan  mengganti  setiap  karakter  menggunakan  kode Huffman.
Gambar. 2 Flowchart Huffman encoding Sumber : Harza Putra (2013)
Gambar. 3 Contoh pohon biner

## H. Bahasa Pemograman Python
Python  merupakan  bahasa  pemograman  yang  bersifat open  source serta  bekerja  dengan  baik  untuk  integrasi komponen,kualitas perangkat lunak, produktivitas pengembang, yang telah digunakan untuk mengembangkan perangkat lunak seperti internet scripting, system  programming,  user  interfaces,  product customization, numberic programming, dan lain-lain [17]. Fitur-fitur  yang  dapat  digunakan  untuk  pengembangan perangkat  lunak  pada  bahasa  pemograman  python  yaitu [17] :
1. Multi paradigm design
2. Open source
3. Simplicity
4. Library support
5. Portability
6. Extendable
7. scalability

## III. M ETODOLOGI P ENELITIAN
Metode  penelitian  merupakan  tahapan-tahapan  yang dijadikan  dasar  atau  panduan  dalam  melakukan  suatu penelitian.  Metode  penelitian  yang  dilakukan  dijelaskan pada Gambar 4.
Gambar. 4 Diagram alir penelitian

## A. Studi Literatur
Studi literatur merupakan metode yang dilakukan untuk mengumpulkan  data  dengan  mengumpulkan  bahan-bahan referensi  berkaitan  dengan  pengamanan  dokumen  digital menggunakan  algoritma  kriptografi  dan  algoritma kompresi  dari  buku-buku,  literatur,  dan  jurnal.  Adapun referensi yang digunakan adalah referensi yang berkaintan dengan    algoritma  kriptografi  asimetri  RSA,  algoritma kriptografi Vernam Cipher , algoritma kompresi Huffman, dan penelitian terdahulu.

## B. Analisis Kebutuhan
Analisis  kebutuhan  dilakukan  untuk  memperoleh informasi dan menentukan kebutuhan fungsional dan non- fungsional.  Kebutuhan  fungsional  yang dibutuhkan untuk pengaman dokumen digital menggunakan algoritma RSA, Vernam Cipher, dan Huffman adalah sebagai berikut :
1) Input  Dokumen :  Sistem  dapat  memasukkan  dokumen berekstensi .pdf, .txt, .zip.
2) Pembangkitan Kunci RSA : Sistem dapat membangkitkan  kunci  RSA  dengan  memasukkan  nilai besaran bit kunci yang akan dibangkitkan.
3) Pembangkitan  kunci  Vernam  Cipher :  Sistem  dapat membangkitkan kunci algoritma Vernam Cipher secara otomatis dan acak.
4) Enkripsi  Dokumen :  Sistem  dapat  melakukan  enkripsi dokumen  dengan  menggunakan  algoritma  Vernam Cipher dan  algoritma  RSA,  kemudian  menghasilkan ciphertext .
5) Dekripsi  Dokumen :  Sistem  dapat  melakukan  dekripsi dokumen  dengan  menggunakan  algoritma  RSA  dan algoritma  Vernam Cipher, kemudian  menghasilkan plaintext.
6) Kompresi  Dokumen :  Sistem  dapat  melakukan kompresi  dokumen  dengan  menggunakan  algoritma kompresi Huffman.
7) Dekompresi  Dokumen :  Sistem  dapat  melakukan dekompresi  dengan  menggunakan  algoritma  kompresi Huffman.
Kebutuhuan  non-fungsional  yang  dibutuhkan  antara lain,  format  kunci  publik  dan  privat  adalah  .pem,  format kunci  vernam  adalah  .txt,  dan  tampilan  antarmuka  yang sederhana serta mudah dipahami.

## C. Desain dan Perancangan
Sistem yang dibangun berbasis desktop dan perancangan  program  dilakukan  dengan  menggunkakan diagram  alir  ( flowchart) .  Adapun  perancangan  yang dibuat adalah perancangan pembangkitan kunci publik/privat  RSA,  perancangan  enkripsi  dokumen, perancangan  dekripsi  dokumen,  perancangan  kompresi dokumen,  perancangan  dekompresi,  arsitektur  sistem  dan perancangan antar muka sistem.

## D. Kunci Publik dan Privat RSA
Pada  proses  enkripsi  menggunakan  algoritma  asimetri, dibutuhkan  kunci  publik  dan  privat.  Sebelum  ke  tahap enkripsi  maupun  dekripsi,  maka  dilakukan  proses pembangkitan  kunci  publik  dan  kunci  privat  RSA sebagaimana  digambarkan  dengan  diagram  alir  pada Gambar  5.  Untuk  membangkitkan  kunci,  diperlukan masukan  berupa  nilai  bit  kunci  yang  akan  dibangkitkan. Sebagai contoh jika memasukkan nilai sebesar 20.000 bit, maka  akan  menghasilkan  kunci  publik  sebesar  4  KB (Kunci  publik  adalah  20%  dari  nilai  masukan)  dan  kunci privat sebesar 16 KB (Kunci privat adalah 80% dari nilai masukan).  Ketika  nilai  telah  dimasukkan,  maka  sistem akan membangkitkan kunci publik dan kunci privat secara otomatis,  tanpa  perlu  memasukkan  nilai p dan q untuk menghitung nilai n dan  ( n ) (berdasarkarn rumus n = p.q dan  ( n ) = ( p - 1)( q - 1)).
Gambar. 5 Diagram alir proses generate RSA key
Untuk  kunci  publik,  sistem  dengan  sendirinya  akan membangkitkan nilai p dan q (dengan syarat p ≠ q ), serta
mencari  nilai  relatif  prima  berdasarkan  nilai n=p.q untuk mendapatkan  nilai e (kunci  publik  membutuhkan  nilai e dan n ).
Untuk  kunci  privat,  sistem  akan  menghitung  nilai  ( n ) =  ( p -1)( q -1),  serta  menghitung  nilai  d  =  1  + k  ( n )  / e . Sistem  akan  mencari  nilai k yang  sesuai  secara  otomatis sehingga  mendapatkan  nilai d yang  bulat  (kunci  privat membutuhkan  nilai d dan  ( n )).  Kemudian    kunci  publik dan privat akan dibangkitkan dan tersimpan pada desktop .

## E. Enkripsi
Pada tahapan proses enkripsi dapat dilihat seperti  pada Gambar 6. Dokumen yang akan dimasukkan akan menjadi plaintext pada  tahap  enkripsi.  Adapun  ekstensi plaintext yang dapat digunakan antara lain adalah .txt, .pdf, dan .zip. Setelah plaintext dimasukkan,  sistem  kemudian check ekstensi plaintext .  Jika  ekstensi  sesuai  maka plaintext dapat  diproses.  Setelah  itu,  memasukkan  kunci  publik RSA  untuk  melakukan  proses  enkripsi  menggunakan algoritma RSA.
Selanjutnya  sistem  akan  membaca  panjang  karakter plaintext kemudian membangkitkan kunci Vernam. Untuk proses enkripsi tahap pertama, plaintext dienkripsi dengan menggunakan  metode  Vernam.  Sistem  akan  membaca plaintext dan  Vernam  key  yang  telah  dibangkitkan. Sebelum  melakukan  enkripsi,  baik plaintext dan  Vernam key,  setiap  karakter  diubah  terlebih  dahulu  dari  kode ASCII menjadi kode biner.
Langkah selanjutnya adalah melakukan proses enkripsi tahap  kedua. Ciphertext yang  sebelumnya  dihasilkan menggunakan algoritma Vernam, akan digunakan sebagai RSA plaintext untuk tahap enkripsi selanjutnya. Plaintext akan  dibagi  menjadi  blok-blok  data  yang  lebih  kecil dimana setiap blok data harus berada di dalam [0, n -1] ( n merupakan  nilai  dari n = p.q ).  Setiap  karakter  dikodekan menjadi  nilai  desimal  dengan  sistem  pengkodean  ASCII. Untuk  menghasilkan ciphertext ,  digunakan  kunci  publik RSA  yang  telah  dimasukkan  terlebih  dahulu  pada  proses sebelumnya.  Setiap  blok plaintext akan  dienkripsi menggunakan  rumus  E e ( m )  =  c  = m e mod n .  Setiap  blok yang telah dienkripsi kemudian akan disambung sehingga menghasilkan ciphertext hibrid.

## F. Dekripsi
Pada tahapan proses dekripsi dapat dilihat seperti pada Gambar 7. Ciphertext hibrid yang telah dihasilkan melalui proses  enkripsi  menjadi  data  masukan  untuk  proses dekripsi.  Ketika  ciphertext  hibrid  dimasukkan,  sistem akan  mengecek  ekstensi  ciphertext  apakah  sesuai.  Jika sesuai  maka  ciphertext  dapat  diproses.  Kemudian, memasukkan  kunci  RSA  Private  key  dan  Vernam  key kedalam sistem untuk proses dekripsi.
Selanjutnya adalah dekripsi tahap pertama menggunakan algoritma RSA dengan menggunakan kunci private.    Sama  dengan  proses  enkripsi,  dimana  setiap karakter  pada  ciphertext  akan  dibagi  menjadi  beberapa blok  data  yang  berada  dalam  jangkauan  [0,  n-1]  (n merupakan  nilai  dari  n  =  p.q).  Setiap  kode  tersebut
kemudian dikodekan kembali berdasarkan sistem pengkodean ASCII. Perbedaannya dengan proses enkripsi adalah  penggunaan  kunci.  Pada  proses  dekripsi,  kunci yang  digunakan  adalah  kunci  private.  Tiap-tiap  blok ciphertext didekripsi dengan menggunakan rumus Dd(c) = m  =  cd  mod  n.  Setiap  blok  ciphertext  kemudian  akan disambung sehingga menjadi RSA plaintext.
Pada  proses  dekripsi  tahap  kedua  menggunakan algoritma  Vernam.  Sistem  membaca  RSA  plaintext  dan Vernam  key  yang  telah  dimasukkan,  kemudian  plaintext dan  Vernam  key  dikodekan  dari  kode  ASCII  menjadi kode biner sama seperti pada tahap enkripsi. Menggunakan  rumus  Pi  =  (Ei  -  Ki)  mod  X,  dimana  X  = jumlah  karakter  yang  digunakan  untuk  mendekripsikan tiap  karakter  pada  ciphertext  dengan  tiap  karakter  pada kunci  Vernam.  Setelah  itu,  sistem  menghasilkan  plaintex akhir.
Gambar. 6  Diagram alir proses enkripsi

## G. Kompresi dan Dekompresi
Pada  tahapan  proses  kompresi  dapat  dilihat  pada Gambar  8.  Data  yang  dimasukkan  berupa  dokumen ( plaintext atau ciphertext )  digital.  Sistem  akan  mengecek apakah  ekstensi  dokumen  dapat  diproses  atau  tidak.  Jika sesuai,  maka  proses  akan  dilanjutkan.  Kemudian dilanjutkan  dengan  menerapkan  algoritma  kompresi Huffman.
Pada  tahap  kompresi  Huffman  akan  dibentuk  sebuah pohon Huffman untuk mendapatkan kode baru dari setiap karakter  yang  terbaca  oleh  sistem.  Sebagai  contoh,  telah dimasukkan  file  yang  akan  dikompres  berisi  karakter- karakter sebagai berikut beserta kode binernya :
A = 01000001 b =  01100010 C = 01000011 d = 01100100 e = 01100101 F = 01000110
Gambar. 7  Diagram alir proses dekripsi
Gambar. 8   Diagram alir proses kompresi
Karakter-karakter tersebut memiliki frekuensi kemunculan A = 5, b = 9, C =12, d = 13, e = 16, dan F = 45. Langkah-langkah pembentukan pohon Huffman dapat dilihat pada Gambar 9 dan 10.
Pada  langkah  awal  pembentukan  pohon  Huffman dilakukan  dengan  mengurutkan  probabilitas  frekuensi karakter  dari  yang  terendah  hingga  tertinggi  kemudian representasikan  ke  dalam  bentuk  daun  ( leaf) .  Kemudian, untuk  setiap  langkah  selanjutnya  dilakukan  dengan membentuk  simpul  daun  ( leaf  node )  baru  dengan mengekstrak  dari  dua  daun  yang  memiliki  nilai  frekuensi terkecil.  Langkah  ini diulang  hingga seluruh simpul daun (leaf node) terhubung atau tidak ada yang terpisah. Setiap cabang  ke  kiri  pada  pohon  Huffman  diberi  angka  0 sedangkan  setiap  cabang  ke  kanan  diberi  angka  1.  Pohon
Huffman  selesai  dibentuk  sehingga  didapat  kode  baru untuk  setiap  karakter  dengan  mengikuti  alur-alur  pada setiap cabang pohon Huffman.
Gambar. 9  Langkah pembentukan pohon Huffman 1-4
Gambar. 10  Langkah pembentukan pohon Huffman 5-6
TABEL I P ERBANDINGAN K ODE B ARU DAN K ODE L AMA
Karakter Kode Baru ( Huffman Coding ) Kode Lama A 1100 01000001 b 1101 01100010 C 101 01000011 d 100 01100100 e 111 01100101 F 0 01000110
Pada  tahapan  proses  dekompresi  dapat  dilihat  pada Gambar  11.  Dokumen  masukan  adalah  dokumen  yang telah  melalui  proses  kompresi  Huffman.  Setelah dimasukkan  sistem  akan  mengecek  apakah  ekstensi dokumen  dapat  diproses  atau  tidak.  Jika  sesuai,  maka proses akan dilanjutkan.
Selanjutnya  sistem  akan  melakukan  dekompresi menggunakan algoritma Huffman. Pada proses sebelumnya telah didapat nilai kode biner Huffman seperti
yang  tampak  pada  Tabel  1.  Setiap string pada  dokumen yang  telah  dimasukkan  akan  dikonversikan  menjadi  kode biner, kemudian akan dikonversikan lagi menjadi karakter berdasarkan  dengan  nilai  kode  biner.  Sebagai  contoh, masukan  yang  sebelumnya  telah  terkompresi  memiliki kode  biner  01100101111.    Selanjutnya  menggunakan kode  biner Huffman sebagai  acuan  untuk  mengkonversi setiap  kode  biner  menjadi  karakter.  Contoh  proses konversi dijelaskan pada Gambar 12.
Gambar. 11   Diagram alir proses dekompresi

## Gambar. 12   Proses konversi kode biner Huffman
Sistem  membaca  masukan  kemudian  menyesuaikan kode biner dengan karakter yang sesuai berdasarkan tabel pada gambar. Diketahui  bahwa  A  = 1100, b = 1101, C = 101,  d  =  100,  e  =  111,  dan  F  =  0.  Dari  kode  biner 01100101111,  sistem  akan  membaca  nilai  bit  pertama yaitu 0, kemudian mencocokkannya dengan karakter yang sama  dengan  nilai  bit  tersebut  yang  mana  pada  contoh diatas  adalah  F.    Kemudian  langkah  ini  dilanjutkan dengan  membaca  bit-bit  selanjutnya  dan  mengkonversi nya dengan kode yang sesuai.
Setelah  melalui  proses  dekompresi,  sistem  akan menghasilkan dokumen yang telah didekompresi kemudian menyimpannya pada desktop.
H. Arsitektur Sistem
Sistem  yang  dibangun  merupakan  sistem  yang  dapat digunakan  untuk  melakukan  penyandian  dan  kompresi dokumen.  Terdapat  dua  pengguna  pada  sistem  yaitu pengirim data dan penerima data.
Pengirim Penerima Plaintext Kunci Publik Enkripsi Hibrid/ Kompresi Huffman Kunci Privat Ciphertext hasil kompres Kunci Vernam Dekompresi Huffman/ Dekripsi Hibrid Plaintext

## Gambar. 13  Arsitektur Sistem
Arsitektur sistem dapat dilihat seperti pada Gambar 13.
Sistem menerima masukan berupa dokumen berkentesi .txt/.pdf/.zip sebagai plaintext dan kunci publik RSA, kemudian dilakukan proses enkripsi dengan metode hibrid  Vernam Cipher dan  RSA.  Setelah  melalui  tahap enkripsi,  sistem  akan  menghasilkan ciphertext dan  kunci Vernam. Selanjutnya, ciphertext dapat dikompres menggunakan  metode  Huffman  sehingga  ukuran  data ciphertext diharapkan dapat diperkecil. Pengirim kemudian dapat mengirimkan ciphertext kepada penerima data.  Penerima  dapat  melakukan  dekompresi ciphertext terlebih  dahulu  supaya  dapat  dilakukan  proses  dekripsi hibrid  selama  penerima  memiliki  kunci  privat  RSA  dan kunci Vernam yang tepat.

## IV. P EMBAHASAN DAN H ASIL

## A. Implementasi  Library Kriptografi
Pada  penelitian  ini  khususnya  dalam  penerapan algoritma kriptografi telah dilakukan pertimbangan dalam penggunaan library . Untuk penerapan algoritma kriptografi  RSA,  dibutuhkan  waktu  tercepat  untuk membangkitkan  kunci  dengan  ukuran  besar,  sehingga penelitian  ini  menguji  kecepatan  proses library yang digunakan  dengan  ukuran  kunci  yang  sudah  ditentukan seperti pada Tabel 2.

## TABEL II
P ERBANDINGAN K ODE B ARU DAN K ODE L AMA
Nama Libra ry Tipe Kunci Ukuran (bit) per Waktu (s) 5.000 bit 10.000 bit 15.000 bit 20.000 bit rsa 4.0 Pkcs 1 57,02 s 862 s 6.488 s 11.126,8 6 s pyope nssl 19.1.0 Pkcs 8 0,39 s 22,81 s 65,77 s 353,42 s crypto graph Pkcs 8 0,23 s 35,01 s 186,51 s 969,07 s
y 3.1 Nama Libra ry Tipe Kunci Ukuran (bit) per Waktu (s) 5.000 bit 10.000 bit 15.000 bit 20.000 bit Pycry ptodo me 3.9.8 Pkcs 8 17,69 s 118,66 s 2.656,1 s 4.180,22 s
Berdasarkan  Tabel  2,  penelitian  ini  menggunakan library pyopenssl 19.1.0 untuk proses pembangkitan kunci publik dan privat algoritma asimetri RSA karena memiliki waktu pembangkitan kunci yang lebih cepat dibandingkan dengan library yang  lain.  Proses  enkripsi  dan  dekripsi menggunakan library pycryptodome 3.9.8 karena mendukung  tipe  kunci  Pkcs  8  yang  dihasilkan  pyopenssl 19.1.0.
Pada  penerapan  algoritma  kriptografi  Vernam  Cipher dilakukan  pengujian  terhadap  tiga library sehingga menjadi pertimbangan penggunaan libary yang digunakan pada  aplikasi  pengamanan  dokumen  digital.  Adapun  hal yang  diuji  adalah  waktu  proses  enkripsi/dekripsi,  serta ketepatan hasil dekripsi.
TABEL III P ERBANDINGAN W AKTU P ROSES
Nama Plaintext Library Waktu Enkrips i Waktu Dekrips i Hasil Dekripsi Plaintxt- 01.txt Vernam 2.5.6 0,0039 s 0,0155 s Tepat Onetimep ad 1.4 0,0039 s 0,0029 s Tidak tepat Cryptogra phykit 2.0.3 0,0179 s 0,0624 s Tepat Plaintxt- 02txt Vernam 2.5.6 0,0039 s 0,0244 s Tepat Onetimep ad 1.4 0,0039 s 0,0019 s Tidak tepat Cryptogra phykit 2.0.3 0,0705 s 0,0099 s   Tepat Plaintxt- 03.txt Vernam 2.5.6 0,0167 s 0,0019 s   Tepat Onetimep ad 1.4 0,0069 s 0,0020 s Tidak Tepat Cryptogra phykit 2.0.3 0,0628 s 0,0279 s Tepat Plaintxt- 04.txt Vernam 2.5.6 0,0158 s 0,0020 s Tepat Onetimep ad 1.4 0,0249 s 0,0020 s Tidak tepat Cryptogra phykit 2.0.3 0,0578 - Error
Berdasarkan  Tabel  3, library Onetimepad  1.4  tidak berhasil  melakukan  dekripsi. Library tersebut  tidak mengembalikan  isi plaintext seperti  semula.  Pada library
Cryptographykit 2.0.3 ketika diuji menggunakan plaintext Plaintxt-04.txt, library tidak  mampu  melakukan  dekripsi dan sistem  menunjukkan error yang  menunjukkan bahwa tidak  mampu  untuk  melakukan encoding karakter  ‘\x93’. Pada library Vernam  2.5.6  memiliki  waktu  proses  yang lebih cepat serta mampu melakukan dekripsi dengan tepat sehingga library ini yang digunakan pada sistem.

## B. Pengujian Process Encrypt Output
Proses  pengujian  meliputi  ukuran plaintext ,  ukuran kunci  vernam  dan  publik  RSA,  dan  waktu  yang diperlukan  untuk  enkripsi.  Pengujian  yang  dilakukan menggunakan tiga jenis file dokumen digital yaitu txt, pdf, dan zip.
Salah  satu  data  yang  digunakan  untuk  pengujian process encrypt output pada format txt  adalah Plaintxt-01. Isi  dari  tampilan  dari  Plaintxt-01  dapat  dilihat  pada Gambar  14.  Untuk  melakukan  enkripsi  terhadap file tersebut, digunakan kunci publik publickeyS.pem. Isi dari tampilan kunci publik dapat dilihat pada gambar 15.
Ketika  proses  enkripsi  berlangsung,  kunci  vernam dibangkitkan dengan menyelaraskan panjang karakter dari plaintext yang dimasukkan. Isi kunci vernam dapat dilihat pada Gambar 16.
Gambar. 14  Tampilan isi plaintext Plaintext-01.txt
Setelah  berhasil  dikonversi,  maka plaintext dapat dilanjutkan  untuk  dienkripsi.  Ketika  proses  enkripsi berlangsung, kunci vernam dibangkitkan dengan menyelaraskan  panjang  karakter  dari plaintext yang dimasukkan. Isi kunci  vernam dapat dilihat pada Gambar 16.
Setelah plaintext dan  kunci  publik  dimasukkan  serta kunci  vernam  dibangkitkan,  Dilakukan  proses  enkripsi tahap pertama menggunakan algoritma Vernam dilanjutkan kemudian menggunakan algoritma RSA. Hasil dari  enkripsi  tersebut  adalah ciphertext . Ciphertext tersebut merupakan ciphertext hybrid yang adalah produk akhir  dari  proses  enkripsi  dua  algoritma. Ciphertext yang dihasilkan dapat dilihat pada Gambar 17.
Salah  satu  data  yang  digunakan  untuk  pengujian process  encrypt  output pada  format  pdf  adalah  Plainpdf- 03.  Pada  format  pdf, file perlu  dikonversikan  terlebih dahulu menjadi file berformat txt supaya dapat dienkripsi. Ketika  dilakukan  konversi,  maka file akan  tereduksi ukuran  datanya. File Plaindpdf-03  memiliki  ukuran  data
sebesar  185.229 bytes .  Ketika  telah  dilakukan  konversi, file tersebut  memiliki  ukuran  sebesar  3.493 bytes (data yang  diambil  hanyalah  berupa  teks  serta  dikonversi menjadi format txt sehingga mengalami jumlah pengurangan  data  yang  besar  ).  Setelah  berhasil dikonversi,  maka plaintext dapat  dilanjutkan  untuk enkripsi. Proses enkripsi dilanjutkan dengan memasukkan kunci publik dan pembangkitan kunci vernam. Selanjutnya  dilakukan  proses  enkripsi  dengan  melalui algoritma  Vernam  yang  kemudian  dilanjutkan  dengan algoritma RSA.
Gambar. 15 Tampilan isi kunci publik kuncipublik30B.pem
Gambar. 16 Tampilan isi kunci Vernam vernam_keytxt-01.txt
Pada  pengujian  file  berformat  zip, file akan  dilakukan ekstraksi  terlebih  dahulu.  Ketika  file  telah  dimasukkan, sebelum  proses  enkripsi  dilakukan  sistem  membaca kembali  format file pada  berkas  zip.  Jika  format file adalah  txt,  maka  dilanjutkan  ke  tahap  proses  enkripsi. Sedangkan  jika  format file adalah  pdf,  maka file akan dikonversikan  terlebih  dahulu  menjadi  format  txt. Selanjutnya  proses  enkripsi  dilakukan  sama  seperti  pada saat  melakukan  enkripsi  dengan  format  pdf  atau txt  yang telah dijelaskan sebelumnya.
Hasil  pengujian  meliputi  waktu  yang  diperlukan  untuk proses  enkripsi  dengan  beberapa yang  berbeda,  ukuran kunci,  serta  ukuran file ketika  telah  dienkripsi.  Hasil pengujian dapat dilihat pada Tabel 4.
TABEL IV
P ROCESS E NCRYPT O UTPUT No Nama File K.Vernam K.Publik Size (byte) Waktu Enkripsi (detik) Plaintext K.Vernam K.Publik Ciphe rtext 1 Plaintxt-01.txt vernam_keytxt- 01.txt publickeyS.pem 651 642 3.489 2.500 0,0688 2 Plaintxt-02.txt vernam_keytxt- 02.txt publickeyS.pem 1.037 1.002 3.489 2.500 0,1244 3 Plaintxt-03.txt vernam_keytxt- 03.txt publickey56B.pe m 4.080 4.039 9.583 7.000 0,4376 4 Plaintxt-04.txt vernam_keytxt- 04.txt Publicke60B.pem 4.657 4.640 10.262 7.500 0,5205 5 Plainpdf- 01.pdf vernam_keypdf- 01.txt publickey56B.pe m 119.882 5.998 9.583 7.000 0,4686 6 Plainpdf- 02.pdf vernam_keypdf- 02.txt publickey28B.pe m 181.799 2.725 4.846 3.500 0,1402 7 Plainpdf- 03.pdf vernam_keypdf- 03.txt publickey56B.pe m 185.299 3.493 9.583 7.000 0,4347 8. Plainpdf- 04.pdf vernam_keypdf- 04.txt publickey60B.pe m 461.453 2.673 10.262 7.500 0,6628
No Nama File K.Vernam K.Publik Size (byte) Waktu Enkripsi (detik) Plaintext K.Vernam K.Publik Ciphe rtext 9 Plainzip- 01.zip vernam_keyzip- 01.txt publickeyS.pem 710 1.006 3.489 2.500 0,0728 10 Plainzip- 02.zip vernam_keyzip- 02.txt publickey56B.pe m 1.886 3.568 9.583 7.000 0,4797 11 Plainzip- 03.zip vernam_keyzip- 03.txt publickey56B.pe m 184.728 3.744 9.583 7.000 0,5233 12 Plainzip- 04.zip vernam_keyzip- 04.txt publickey60B.pe m 714.871 6.595 10.262 7.500 0,5782
Gambar. 17 Tampilan isi ciphertext hybrid ciphertexttxt-01
Waktu  eksekusi  proses  enkripsi  diukur  menggunakan log program.  Berdasarkan  Tabel  4,  semakin  besar file maka  semakin  lama  waktu  yang  dibutuhkan  untuk melakukan  enkripsi.  Selain  itu,  besar  ukuran  data  dari ciphertext dipengaruhi  oleh  besarnya  kunci  publik  RSA yang  digunakan.  Tampak  pada  Tabel  4  bahwa  setiap file dengan  kunci  publik  yang  sama  memiliki  ukuran ciphertext yang sama besarnya.

## C. Pengujian Process Decrypt Output
Proses  pengujian  meliputi  ukuran plaintext ,  ukuran kunci  vernam  dan  privat  RSA,  waktu  dekripsi  dan keterangan.
Salah  satu  data  yang  digunakan  adalah  ciphertexttxt- 01.txt.  Isi  tampilan ciphertext dapat  dilihat  pada  Gambar 18.  Untuk  melakukan  dekripsi  digunakan  kunci  privat pada  tahap  dekripsi  algoritma  RSA.  Kunci  privat  yang digunakan dapat dilihat pada Gambar 20.
Kunci  vernam  yang  digunakan  sama  dengan  ketika proses  enkripsi.  Kunci  Vernam  yang  digunakan  dapat dilihat  pada  Gambar  19.  Proses  dekripsi  tahap  pertama menggunakan algoritma RSA, karena output dari enkripsi merupakan  produk  RSA.  Kemudian  dilanjutkan  dengan proses  dekripsi  tahap  kedua  menggunakan  algoritma Vernam.  Hasil  akhir  dari  proses  dekripsi hybrid adalah plaintext . Plaintext yang  dihasilkan  dapat  dilihat  pada
Gambar  20  dan  dibandingkan  dengan plaintext asli  pada Gambar 14.
Gambar. 18 Tampilan isi plaintext Plaintext-01.txt
Gambar. 19  Tampilan isi kunci Vernam vernam_keytxt-01.txt
Gambar. 20  Tampilan isi kunci privat privatekeyS.pem
TABEL V
P ROCESS D ECRYPT O UTPUT No Nama File K.Vernam K.Publik Size (byte)
Waktu Enkripsi (detik) Ciphert ext K.Ver nam K.publi k Plainte xt ( hybrid) Plaintex t(asli) 1 ciphertexttx t-01.txt vernam_keytx t-01.txt privatekeyS.pem 2.500 642 15.386 651 651 24,3773 2 ciphertexttx t-02.txt vernam_keytx t-02.txt privatekeyS.pem 2.500 1.002 15.386 1.037 1.037 14,7132 3 ciphertexttx t-03.txt vernam_keytx t-03.txt privatekey56B.pe m 7.000 4.039 42.808 4.072 4.080 307,2679 4 ciphertexttx t-04.txt vernam_keytx t-04.txt privatekey60B.pe m 7.500 4.640 45.855 4.657 4.657 327,0073 5 ciphertextp df-01.txt vernam_keyp df-01.txt privatekey56B.pe m 7.000 5.9928  42.808 6.622 119.882 264,1335 6 ciphertextp df-02.txt vernam_keyp df-02.txt privatekey28B.pe m 3.500 2.725 21.480 2.791 181.799 35,9811 7 ciphertextp df-03.txt vernam_keyp df-03.txt privatekey56B.pe m 7.000 3.493 42.808 3.603 185.299 262,6002 8 ciphertextp df-04.txt vernam_keyp df-04.txt privatekey60B.pe m 7.500 2.673 45.855 2.983 461.453 323,3862 9 ciphertextzi p-01.txt vernam_keyzi p-01.txt privatekeyS.pem 2.500 1.006 15.386 1.045 710 13,7768 10 ciphertextzi p-02.txt vernam_keyzi p-02.txt privatekey56B.pe m 7.000 3.568 42.808 3.598 1.886 264,0918 11 ciphertextzi p-03.txt vernam_keyzi p-03.txt privatekey56B.pe m 7.000 3.744 42.808 3.871 184.728 279,4607 12 ciphertextzi p-04.txt vernam_keyzi p-04.txt privatekey60B.pe m 7.500 6.595 45.855 7.574 714.871 374,9247
Dari Tabel 5 dapat dilihat bahwa semakin besar ukuran file ciphertext , semakin lama waktu yang diperlukan untuk dekripsi.  Pada file berformat  txt,  dapat  dibandingkan ukuran plaintext hasil  dekripsi  dengan plaintext asli memiliki  ukuran  yang  sama.  Adapun  perbedaan  seperti pada kasus dekripsi ciphertexttxt-03.txt yang menghasilkan plaintext dengan ukuran sebesar 4.072 bytes , sedangkan  ukuran  asli plaintext adalah  4.080 bytes . Kendati demikian,  tidak ada pengurangan  informasi  yang terjadi.
Perbedaan  hasil  yang  sangat  besar  pada  perbadingan ukuran plaintext hybrid dengan plaintext asli  terjadi  pada format pdf dan zip. Hal  ini terjadi karena baik  format zip dan  pdf  ketika  dienkripsi,  dikonversi  terlebih  dahulu menjadi file berformat  txt.  Ketika  proses  konversi  ini terjadi, hanya teks pada file saja yang diekstraksi. Sebagai contoh,  ketika  Plainpdf-02.pdf  dikonversi  sebelum
dilanjutkan  proses  enkripsi, file tersebut  memiliki  ukuran sebesar 2.725 bytes. Jika dibandingkan hasil dekripsi pada Tabel 5 nomor 6 yang memilki ukuran sebesar 2.791 bytes , ukuran dari perbandingan kedua file tersebut tidak jauh. Melalui  perbandingan  Tabel  4  dan  5,  dapat  dilihat bahwa  proses  dekripsi  membutuhkan  waktu  yang  lebih lama  daripada  proses  enkripsi.  Hal  ini  dipengaruhi  oleh besarnya  ukuran  kunci  privat  dibandingkan  dengan  kunci publik.

## D. Pengujian Proses Kompresi Huffman
Proses  pengujian  meliputi  ukuran file asli,  ukuran file setelah  kompresi,  ukuran file setelah  dekompresi,  waktu kompresi dan dekompresi. Untuk mengetahui keberhasilan  dan  kemampuan  dari  kompresi  Huffman, digunakan sejumlah data dari plaintext maupun ciphertext.
Salah  satu  data  yang  digunakan  untuk  pengujian kompresi Huffman adalah Plaintxt-03.txt. Isi tampilan dari file yang  diuji  dapat  dilihat  pada  Gambar  21. File ini memiliki ukuran sebesar 4.080 bytes (Gambar 22). Setelah dilakukan  proses  kompresi  Huffman,  ukuran file menjadi sebesar 2.629 bytes (Gambar 23). Compression ration (C r ) pada data tersebut :
(3)
Untuk mengembalikan informasi yang telah dikompresi, dilakukan  proses  dekompresi.  Dekompresi  dilakukan dengan  menggunakan file hasil  kompresi  (Plaintxt-03- komp.txt)  dan  menghasilkan file dengan  ukuran  yang sama dengan yang diperlihatkan pada Gambar 23. Sebagai perbandingan,  nama  hasil  dekompresi  berbeda  dengan nama file asli  (sebelum  dikompres).  Ukuran  hasil dekompresi dapat dilihat pada gambar di bawah dan dapat dibandingkan dengan Gambar 23.
Gambar. 21 Isi tampilan file Plaintxt-03.txt
Gambar. 22 Ukuran file sebelum dikompresi
Perbedaan  hasil  kompresi  antara plaintext dan ciphertext disebabkan karena perbedaan tipe file encoding . Plaintext memiliki  tipe encoding “UTF-8”,  sedangkan
pada ciphertext memiliki tipe encoding “UTF-16” seperti. Ketika  suatu  data  dienkripsi,  sistem  tidak  bisa memprediksi  hasil encoding yang  digunakan  pada ciphertext .
Hasil  pengujian  kompresi  Huffman  dapat  dilihat  pada Tabel 6. Berdasarkan Tabel 6, semakin besar suatu ukuran file maka  semakin  banyak  waktu  yang  digunakan  untuk proses  kompresi  maupun  dekompresi.  Dapat  dilihat  juga bahwa  proses  kompresi  memiliki  waktu  eksekusi  yang lebih cepat dibandingkan dengan proses dekompresi.
Berdasarkan  data  uji  pada  Tabel  6,  dokumen plaintext ketika dikompresi, ukurannya semakin kecil. Dapat dilihat pada  data  nomor  1  sampai  dengan  4 file terkompres menjadi 94,93%, 86,21%, 64,43%, 59,07%. Ini berbanding  terbalik  dengan  dokumen ciphertext yang ketika  dilakukan  kompresi  (lihat  gambar  24  dan  25), justru  ukurannya  semakin  besar.  Dapat  dilihat  pada  data nomor  5  sampai  dengan  8 file mengalamai  penambahan ukuran  menjadi  110,04%,  109,8%,  103,65%,  103,53% jika  dibandingkan  ukuran file asli  masing-masing.  Hal yang  mempengaruhi  kejadian  ini  adalah  tipe encoding suatu file . Pada plaintext memiliki tipe encoding “UTF-8” sedangkan ciphertext memiliki tipe encoding “UTF-16”.
Gambar. 23 Ukuran file setelah dikompresi
Gambar. 24 Ukuran ciphertext sebelum dikompresi
TABEL VI P ROSES K OMPRESI H UFFMAN
Gambar. 25 Ukuran ciphertext setelah dikompresi

## V. K ESIMPULAN
Berdasarkan  hasil  analisis  dan  pengujian  terhadap “Aplikasi  pengaman  dokumen  digital  menggunakan algoritma  Kriptografi Hybrid dan  algoritma  Kompresi Huffman”,  maka  dapat  disimpulkan  bahwa  kombinasi algoritma kriptografi dan kompresi belum berjalan dengan baik  seperti  yang  ditujunkkan  pada  Tabel  6  dimana ciphertext ketika dikompresi justru mengalami penambahan  ukuran  data  yang  mana  justru  bertentangan dengan  prinsip  kompresi  data  yaitu  memperkecil  ukuran suatu  data.  Melalui  pengujian process  encrypt  output , dokumen berformat txt, pdf, maupun zip sebagai plaintext dapat  dienkripsi  dengan  menggunakan  kunci  yang  telah dibangkitkan.  Hal  ini  dapat  dilihat  pada  Tabel  4  yang menunjukkan  terjadinya  perubahan  ukuran  data  ketika
sebelum  enkripsi  dan  sesudah  enkripsi.  Terbukti  seperti pada data nomor 3 pada Tabel 4, plaintext dengan ukuran 4.080  byte  ketika  dienkripsi  berubah  ukurannya  menjadi 7.000 byte. Pengujian process decrypt output menunjukkan  bahwa ciphertext dapat  didekripsi  serta mengembalikan  isi  informasi  yang telah dienkripsi dalam format  txt. Hal  ini  dapat  dilihat  pada  Tabel  5.  Terbukti seperti pada data nomor 3 pada Tabel 5, ukuran data yang telah  terdekripsi    adalah  4.080  yang  sama  dengan  ukuran plaintext asli  seperti  pada  Tabel  6  nomor  3.  Ini menunjukkan  terjadinya  pengembalian  isi  informasi. Adapun perbedaan ukuran plaintext yang dihasilkan pada proses  dekripsi  dikarenakan  masukan  berupa plaintext dengan  format  pdf  dan  zip  ketika  dienkripsi  telah dikonversi  menjadi  format  txt,  sehingga  ukuran plaintext yang ditunjukkan pada Tabel 6 merupakan plaintext yang telah dikonversikan terlebih dahulu dan tidak mempengaruhi  isi  dari  informasi  atau  tidak  mengalami cacat  informasi.  Melalui  pengujian  proses  kompresi Huffman,  dokumen  dapat  dikompresi  dengan  baik  pada tipe encoding adalah  “UTF-8”,  sedangkan  tipe encoding “UTF-16”  justru  tidak  mengalami  kompresi,  melainkan penambahan ukuran. Akan tetapi, ketika proses dekompresi terjadi, baik dokumen tipe encoding “UTF-8” dan  “UTF-16”,  dokumen  tersebut  akan  menghasilkan informasi  seperti  semula.  Pada  Tabel  4.6  nomor  4  dapat dilihat plaintext dengan  ukuran  sebesar  4.657 byte ketika dikompres  menghasilkan  ukuran  2.751 byte yang menunjukkan  bahwa  proses  kompresi  berhasil.  Berbeda dengan  data  nomor  5  pada  Tabel  4.6  yang  merupakan ciphertext dengan  ukuran  2.500 byte ketika  dikompres justru terjadi penambahan ukuran menjadi 2.744 byte yang dikarenakan memiliki tipe encoding yang berbeda dengan data  nomor  4.  Dengan  mengimplementasikan  kompresi
No Nama File Ukuran File asli Ukuran file setelah kompresi Ukuran file setelah dekompresi Waktu Kompresi Waktu Dekompresi Compression ration 1 Plaintxt-01.txt 651 618 651 0,0009 0,0029 94,93% 2 Plaintxt-02.txt 1.037 894 1.037 0,0031 0,0069 86,21% 3 Plaintxt-03.txt 4.080 2.629 4.080 0,0139 0,0169 64,43% 4 Plaintxt-04.txt 4.657 2.751 4.657 0,013 0,0189 59,07% 5 ciphertexttxt- 01.txt 2.500 2.744 2.500 0,0139 0,0169 110,04% 6 ciphertexttxt- 02.txt 2.500 2.745 2.500 0,0109 0,0179 109,8% 7 ciphertexttxt- 03.txt 7.000 7.256 7.000 0,0279 0,0488 103,65% 8 ciphertexttxt- 04.txt 7.500 7.756 7.500 0,0319 0,0508 103,53%
dengan  algoritma  Huffman,  ukuran  dokumen  yang dikompresi  semakin  besar  disebabkan  karena  dokumen yang dienkripsi mengalami perubahan tipe encoding yang sulit untuk diprediksi, sehingga algoritma sulit menemukan  tingkat  kemiripan  pola  bit  pada  saat  proses kompresi  dan  menyebabkan  ukuran  dokumen  semakin besar.  Pembesaran  ukuran  dokumen  pada  saat  kompresi tidak  mempengaruhi  ketepatan  hasil  dekompresi  pada dokumen.  Data  yang  diolah  tidak  mengalami  cacat informasi dapat dilihat pada tabel 4.6 dimana ukuran data yang  diolah  ketika  dikembalikan  memiliki  ukuran  yang sama besarnya dengan data asli.
R EFERENSI
[1] J.  Clawdia,  N.  Khairina  and  M.  K.  Harahap,”Implementasi Algoritma Kriptografi One Time Pad (OTP) dengan Dynamic Key Linear  Congruential  Generator  (LCG) ”, KOMIK  (Konferensi Nasional Teknologi Informasi dan Komputer) , vol. 1, no. 1, 2017.
[2] T. H. Saputro, N. Hidayati and E. I. H. Ujianto , “Survei Tentang Algoritma  Kriptografi  Asimetris”, JIP, vol.  6,  no.2,  pp.67-72, Mar. 2020.
[3] A.  Dony,  “Pengantar  Ilmu  Kriptografi:  Teori,  Analisis  dan Implementasi”, ANDI , 2008.
[4] Sujono,  “Penyandi  Data  Aplhanumerik  Menggunakan  Algoritma Kriptografi One  Time  Pad ”, skripsi,  Institut  Teknologi  Bandung, 2007 .
[5] M. D. Irawan, “Implementasi Kriptografi Vigenere Cipher dengan PHP”, Jurnal Teknologi Informasi (JurTI), vol.1, no.1, pp. 11-21, 2017.
[6] R. Munir, “Kriptografi Edisi Kedua”, INFORMATIKA , 2019.
[7] A.  Prayitno  and  N.  Nurdin,  “Analisa  dan  Implementasi Kriptografi  pada  Pesan  Rahasia  Menggunakan  Algoritma Cipher
Transposition ”, Jurnal Elektronik Sistem Informasi dan Komputer (JESIK), vol. 3, no.1,  2017.
[8] R.  Sahara,  H.  Prastiawan  and  A.  Rohman,  “Implementasi Keamanan SMS dengan  Algoritma  RSA  pada  Smartphone Android”, JURNAL ILMIAH FIFO, vol. 9, no. 2, 2017.
[9] A.  Ginting,  R.  R.  Isnanto  and  I.  P.  Windasari,  “Implementasi Algoritma Kriptografi RSA Untuk Enkripsi dan Dekripsi Email”, Jurnal Teknologi dan Sistem Komputer, vol.3, no.2, 2015.
[10] P.  Abdala,  M.  A.  Budiman  and  Herriyance,  “Implementasi Algoritma Kriptografi Vernam Cipher dan DES ( Data Encryption Standard )  pada  Aplikasi Chatting Berbasis  Android”, JURNAL ILMIAH CORE IT, vol. 5, no. 1, 2017.
[11] T.  S  Permana,  C.  A.  Sari,  E.  H.  Rachmawanto  et  al, “Implementasi  Pengamanan  Citra  Digital  Berbasis  Metode Kriptografi Vernam Cipher ”, Techno.COM, vol. 16, no. 4, 2017. [12] M.  I.  Ukkas,  R.  Andrea  and  A.  B.  P.  Anggen,  “Teknik Pengamanan Data dengan Steganografi Metode End Of File (EOF) dan Kriptografi Vernam Cipher ” , Sebatik, vol. 17, no. 1, 2017.
[13] E.  Prayoga  and  K.  M.  Suryaningrum,  “Implementasi  Algoritma Huffman  dan Run  Length  Encoding pada  Aplikasi  Kompresi Berbasis Web ” ,  Jurnal  Ilmiah  Teknologi  Terapan ,  vol.  4,  no.  2, 2018.
[14] D. P. Pujianto, Mujito and B. H. Prasetyo, “Perbandingan Metode Huffman  dan Run  Length  Encoding pada  Kompresi Document ”, InfoTekjar (Jurnal Nasional Informatik a dan Teknologi Jaringan), vol. 5, no. 1, 2020.
[15] J. Adisantoso, D. D. Sulistio and  B. P.  Silalahi, “Kompresi Data Menggunakan Algoritme Huffman”, in Seminar Nasional Aplikasi Teknologi Informasi, Yogyakarta, 2004.
[16] I.  Alam,  “Aplikasi  Kode  Huffman  dalam  Kompresi  Gambar Berformat JPEG”, makalah, Institut Teknologi Bandung, 2008.
[17] A.  F.  Harismawan,  A.  P.  Kharisma  and  T.  Afrianto,  “Analisis Perbandingan  Performa Web  Service Menggunakan  Bahasa Pemrograman  Python,  PHP,  dan  Perl  pada Client Berbasis Android”, Jurnal  Pengembangan  Teknologi  Informasi  dan  Ilmu Komputer , vol. 2, no. 1, 2018.