• No se han encontrado resultados

Aplikasi Transformasi Base 64 pada Kriptografi

N/A
N/A
Protected

Academic year: 2021

Share "Aplikasi Transformasi Base 64 pada Kriptografi"

Copied!
6
0
0

Texto completo

(1)

Aplikasi Transformasi Base 64 pada Kriptografi

Yulisdin Mukhlis, Tjahjo Dwinurti, Akeda Bagus

Jl. Margonda Raya 100 Pondok Cina, Depok 16424, West Java, Indonesia

ymukhlis@staff.gunadarma.ac.id, dwinurti@staff.gunadarma.ac.id,

akeda@staff.gunadarma.ac.id

Ringkasan

Keamanan data merupakan hal yang sangat penting dalam menjaga kerahasiaan informasi, terutama yang berisi informasi sensitif yang hanya boleh diketahui isinya oleh pihak tertentu, sehingga perlu dilakuk-an penydilakuk-andidilakuk-an data supaya beberapa pihak ydilakuk-ang tidak memiliki kewendilakuk-angdilakuk-an tidak akdilakuk-an dapat membuka informasi yang dikirim. Salah satu cara yang digunakan untuk pengamanan data adalah menggunakan sis-tem kriptografi yaitu dengan menyediakan isi informasi (plaintext) menjadi isi yang tidak dipahami melalui proses enkripsi (encipher), dan untuk memperoleh kembali informasi yang asli, dilakukan proses deskripsi (decipher), dengan menggunakan kunci yang benar. Cukup banyak algoritma pada kriptografi, salah satu-nya adalah algoritma Base64. Transformasi base64 digunakan untukEncoding dan Decodingsuatu data ke dalam format ASCII, yang didasarkan pada bilangan dasar 64 atau bisa dikatakan sebagai salah satu metoda yang digunakan untuk melakukanencodingterhadap data biner. Aplikasi ini akan menyajikan implementasi dari proses enkripsi dan dekripsi suatu data baik bersifat text maupun file dengan menggunakan Visual C#.

Kata kunci : Algoritma, kriptografi, base64, encoding, decoding

Gambar 1: Metode enkripsi dekripsi

1

Pendahuluan

Kriptografi adalah ilmu dan seni untuk menjaga ke-amanan pesan yang bertujuan menjaga kerahasia-an informasi ykerahasia-ang terkkerahasia-andung dalam data sehing-ga informasi tersebut tidak dapat diketahui oleh pi-hak yang tidak bertanggung jawab.Terdapat dua kon-sep utama pada kriptografi yaitu enkripsi dan dekri-psi. Enkripsi adalah proses dimana informasi / da-ta yang hendak dikirim berupa dada-ta jelas (plainte-xt) diubah menjadi bentuk yang hampir tidak dike-nali berupa data random (ciphertext) sebagai infor-masi awalnya dengan menggunakan algoritma ter-tentu. Sedangkan dekripsi adalah kebalikan dari enk-ripsi yaitu mengubah kembali bentuk yang tersamar (ciphertext) tersebut menjadi informasi awal (plain-text).

Dasar matematis yang mendasari proses enkri-psi dan dekrienkri-psi adalah relasi antara dua

himpun-an yaitu yhimpun-ang berisi elemen teks terhimpun-ang /plaintext dan yang berisi elemen teks sandi/ciphertext. Enk-ripsi dan dekEnk-ripsi merupakan fungsi transformasi an-tara himpunan-himpunan tersebut. Apabila elemen teks terang dinotasikan dengan P, elemen-elemen teks sandi dinotasikan dengan C, sedang un-tuk proses enkripsi dinotasikan dengan E, dekripsi dengan notasi D[6].

Enkripsi : E(P) = C (1)

Dekripsi : D(C) = P atau D(E(P)) = P (2)

2

Algoritma Base 64

Transformasi base64 merupakan salah satu algoritma untuk Encoding dan Decoding suatu data ke dalam format ASCII, yang didasarkan pada bilangan dasar 64 atau bisa dikatakan sebagai salah satu metoda yang digunakan untuk melakukan encoding (penyan-dian) terhadap data binary. Karakter yang dihasilkan pada transformasi Base64 ini terdiri dari A..Z, a..z dan 0..9, serta ditambah dengan dua karakter ter-akhir yang bersimbol yaitu + dan / serta satu bu-ah karakter sama dengan (=) yang digunakan untuk penyesuaian dan menggenapkan data binary atau pe-ngisi pad. Karakter simbol yang akan dihasilkan akan tergantung dari proses algoritma yang berjalan.

(2)

Gambar 2: Algoritma Encoding

tabel, yaitu tabel data encoding dengan 64 radix dan tabel ASCII. Tabel data encoding berfungsi untuk pro-ses pengkorversian dari data biner ke karakter base 64 dan sebaliknya dari karakter base 64 ke data bi-nary.

2.1

Algoritma Base 64 encoding [4]

Proses encoding pada transformasi base 64 diilustra-sikan seperti pada gambar dibawah :

Dari gambar diatas, data input biner (yang meru-pakan hasil ekstrak dari karakter dengan mengguna-kan tabel ASCII) dimana satu karakter diwakili 8 bits kemudian kumpulan 8 bits tersebut di ekstrak men-jadi kumpulan per 6 bits yang mewakili satu karakter yang disusun membentuk 4 bagian per blok (jadi ter-susun beberapa blok dimana satu blok terdapat 24 bit data). Untuk kemungkinan jika terdapat data bit yang tidak mencapai 6 bits setelah proses ekstrak ta-di, solusinya adalah dengan menambahkan bit 0 pada bit 6 hingga mencapai 6 bit dan bit 1 sisanya hing-ga mencapai 24 bit pada blok yang tersisa. Setelah kumpulan bit tersusun menjadi 24 bits dimana setiap blok nya dibagi menjadi 4 bagian, yang terdiri da-ri susunan-susunan 6 bits, barulah dada-ri setiap bagian 6 bits tersebut data-data binary dapat dikonversikan menjadi karakter encoding base64 berdasarkan tabel data Encoding 64 radix diatas dimana satu bagian 6 bits mewakili satu karakter encoding base64.

2.2

Algoritma Base 64 decoding

Proses decoding pada transformasi base 64 diilustra-sikan seperti pada gambar dibawah :

Pada proses dekripsi berdasarkan gambar algorti-ma decoding diatas, terlihat input data berupa data karakter base64 hasil encoding pada proses sebelum-nya, pertama-tama dengan menggunakan tabel

Da-Gambar 3: Algoritma decoding

ta Encoding 64 Radix, data karakter di ubah menja-di binary, menja-dimana satu karakter menja-di wakili oleh 6 bi-ts data yang dikelompokkkan dalam blok yang berisi 24 bits data, setelah semua kumpulan bits data ter-susun, kumpulan-kumpulan bits tersebut akan dieks-trak menjadi kumpulan 8 bits data, dimana satu blok berisi 24 bits data akan di ekstrak menjadi 3 karak-ter ASCII 8 bits. Selanjutnya dengan menggunakan tabel ASCII, kumpulan 8 bits data tersebut di ekstrak menjadi karakter plaintext (8 bits data mewakili satu karakter Plaintext).

2.3

Algoritma Program

Perancangan program enkripsi dan dekripsi meliputi proses enkripsi dan dekripsi untuk text dan file.

3

Perancangan Program

Dalam Source Code dengan Library terdapat dua bu-ah form yang akan dijelaskan, yaitu Form1.cs.pada form pengoperasian enkripsi dekripsi input text dan Form2.cs.pada form pengoperasian enkripsi dekripsi input file.

3.1

Source code form1 cs [7]

• using System;

• using System.Collections.Generic; • using System.ComponentModel; • using System.Data;

(3)

Gambar 4: Flowchart encoding/decoding Text Ba-se64

Gambar 5: Flowchart encoding/decoding file Base64

• using System.Text;

• using System.Windows.Forms;

Kode-kode diatas merupakan kumpulan kode keywo-rd standar untuk pemograman dalam Visual C#. Ko-de using System menandakan bahwa program ini membutuhkan sistem yang ada pada Visual C# be-serta komponen komponennya. Using System juga berhubungan dengan fungsi pembuatan class.

P r i v a t e v o i d b u t t o n 1 _ C l i c k ( o b j e c t sender , Ev entA rgs e ) { i f ( t h i s . t e x t B o x 1 . Text == ) {

MessageBox . Show( P l a i n T e x t harus d i i s i t e r l e b i h dahulu ) ; r e t u r n ; } b y t e [ ] b y t e s=System . Text . Encoding . ASCII . G e t B y t e s ( t h i s . t e x t B o x 1 . Text ) ; s t r i n g encoding64 = Convert . T oB a se 6 4 S t ri n g ( b y t e s ) ; t h i s . t e x t B o x 2 . Text = encoding64 ; }

Kode kode diatas, merupakan class yang diguna-kan untuk memanggil button btnEncode ketika but-ton tersebut mengalami action click, Kemudian di dalam class diatas terdapat listing yang diguanakan untuk mengenkripsi suatu data dengan mengguna-kan fungsi library yang telah disediamengguna-kan oleh .Net Framework 3.0 untuk keperluan encoding decoding base64 transformation cryptography. Pertama-tama diberikan kondisi bahwa akan ada peringatan ber-upa message box jika textbox1 (tempat user meng-input Plaintext) masih kosong. Kemudian hasil in-put an yang masih berupa karakter String ASCII di-konversikan menjadi binary 8 bits sebelum akhirnya dikonversikan langsung menjadi karakter base64 de-ngan menggunakan fungsi Library .Net Framework, Convert.ToBase64String(byte[]). Hasil konversi en-coding diletakkan pada textBox2.

P r i v a t e v o i d b u t t o n 2 _ C l i c k ( o b j e c t sender , Ev entA rgs e ) { i f ( t h i s . t e x t B o x 2 . Text == ) {

MessageBox . Show( Data encoding base 64 harus d i i s i t e r l e b i h dahulu ) ; r e t u r n ;

(4)

b y t e [ ] b y t e s=Convert . FromBase64String ( t h i s . t e x t B o x 2 . Text ) ; s t r i n g p l a i n t e x t= System . Text . Encoding . ASCII . G e t S t r i n g ( b y t e s ) ; t h i s . t e x t B o x 3 . Text = p l a i n t e x t ; }

Kode pada class diatas digunakan untuk meng-embalikan karakter base64 menjadi plaintext (De-coding). Sama halnya seperti pada proses enco-de, pertama-tama diberikan kondisi bahwa akan ada peringatan berupa message box jika textbox2 (tempat sumber inputi an Chipertext) masih ko-song. Kemudian chipertext berupa karakter ba-se64 langsung di konversikan menjadi kumpulan bit-bit data dengan menggunakan fungsi library yang telah disediakan oleh .Net Framework 3.0, yaitu Convert.FromBase64String(string base64), kemudi-an bit-bit data tersebut di konversikkemudi-an lagi menjadi karakter String ASCII, sebelum akhirnya hasil deco-ding tersebut diletakkan pada textbox3.

3.2

Source Code Form2.cs

• using System; • using System.Collections.Generic; • using System.ComponentModel; • using System.Data; • using System.Drawing; • using System.Text; • using System.Windows.Forms; • using System.IO;

Pertama-tama terdapat penggunaan Using.System yang sama dengan form1.cs pada source code with library sebelumnya. Terdapat satu komponen using System yang ditambahkan pada Form ini, yaitu using System.IO. Komponen ini berfungsi sebagai suatu sys-tem pada Visual C# yang digunakan untuk pengak-sesan data file (misalnya read dan write) pada I/O File (input output file).

P r i v a t e v o i d b t n E n c o d e _ C l i c k ( o b j e c t sender , Ev entA rgs e ) { i f ( ! s t r i n g . IsNullOrEmpty ( t x t O u t . Text ) ) { F i l e S t r e a m f s = new F i l e S t r e a m ( t x t O u t . Text , FileMode . Open , F i l e A c c e s s . Read ) ; b y t e [ ] f i l e b y t e s = new b y t e [ f s . Length ] ;

f s . Read ( f i l e b y t e s , 0 ,

Convert . ToInt32 ( f s . Length ) ) ; s t r i n g encodedData = Convert . To Ba se 6 4 S t ri n g ( f i l e b y t e s , B a s e 6 4 F o r m a t t i n g O p t i o s . I n s e r t L i n e B r e a k s ) ;

txtEncoded . Text = encodedData ; }

e l s e {

MessageBox . Show( S i l a h k a n P i l i h F i l e Yang Akan Di p r o s e s Pada Menu Browse ! ! ! ) ;

r e t u r n ; }

}

Kode kode diatas, merupakan class yang diguna-kan untuk memanggil button btnEncode ketika but-ton tersebut mengalami action click. Pertama-tama dilakukan pengecekan pada textbox txtOut.Text apa-kah txtOut.Text sudah memilki value atau belum, mana value itu sendiri merupakan alamat dari di-rectory file yang di pilih oleh user. Kondisinya jika txtOut.Text sudah memilki value, maka program ak-an melakukak-an operasi file dengak-an membuka (open) dan membaca (read) file yang dituju. Jika kondisinya bernilai false atau txtOut.Text belum memilki value maka program akan mengeluarkan peringatan dalam bentuk message box yang berisi string “Silahkan Pilih File Yang Akan Di proses Pada Menu Browse!!!”. Sete-lah file dibuka dan dibaca, program akan mendekla-rasikan panjang dari isi File dan melakukan konversi String ASCII menjadi String Base64 dengan library Convert.ToBase64String. Hasil dari konversi itu sen-diri akan diletakkan di txtEncoded.Text.

p r i v a t e v o i d b t n D e c o d e _ C l i c k ( o b j e c t sender , Ev entA rgs e ) {

b y t e [ ] f i l e b y t e s=Convert .

FromBase64String ( txtEncoded . Text ) ; i f ( F i l e . E x i s t s ( c : \ \ t x t O u t F i l e . Txt ) )

{

F i l e S t r e a m f s = new

F i l e S t r e a m ( c : \ \ t x t O u t F i l e . Txt , FileMode . Open , F i l e A c c e s s . ReadWrite ,

F i l e S h a r e . None ) ; f s . Write ( f i l e b y t e s , 0 ,

(5)

f s . C l o s e ( ) ; } e l s e { F i l e S t r e a m f s = new F i l e S t r e a m ( c : \ \ t x t O u t F i l e . Txt , FileMode . CreateNew , F i l e A c c e s s . Write , F i l e S h a r e . None ) ; f s . Write ( f i l e b y t e s , 0 , f i l e b y t e s . Length ) ; f s . C l o s e ( ) ; } }

Kode pada class diatas digunakan untuk mendesk-ripsikan kembali isi file yang telah di enkripsi sebe-lumnya dengan menggunakan keyword library Con-vert.FromBase64String. Kondisi pada kode diatas menyatakan bahwa apakah file txtOutFile.Txt sudah ada sebelumnya pada directory c:\\, dimana txtOu-tFile.Txt sendiri merupakan file tempat diletakkan-nya output hasil dekripsi dari file source (dimana isi dari txtOutFile.Txt harus sama dengan file source). Jika kondisi diatas bernilai true, maka program akan melakukan operasi file berupa Open dan ReadWri-te hasil dekripsi pada txtOutFile.Txt. Kemudian ji-ka kondisi diatas bernilai false, maji-ka program aji-kan melakukan operasi file berupa CreateNew (membuat baru) file bernama txtOutFile.Txt pada directory c:\\ dan Write hasil dekripsi pada txtOutFile.Txt yang te-lah dibuat tadi.

P r i v a t e v o i d b u t t o n 1 _ C l i c k ( o b j e c t sender , Ev entA rgs e ) { Stream myStream ; O p e n F i l e D i a l o g o p e n F i l e D i a l o g 1 = new O p e n F i l e D i a l o g ( ) ; o p e n F i l e D i a l o g 1 . I n i t i a l D i r e c t o r y = C : \ \ ; o p e n F i l e D i a l o g 1 . F i l t e r = t x t f i l e s (∗. t x t ) |∗. t x t |Doc f i l e s (∗. doc ) |∗. doc | R t f f i l e s (∗. r t f )| ∗. r t f | A l l f i l e s (∗.∗) |∗.∗; o p e n F i l e D i a l o g 1 . F i l t e r I n d e x = 1 ; o p e n F i l e D i a l o g 1 . R e s t o r e D i r e c t o r y = t r u e ; i f ( o p e n F i l e D i a l o g 1 . ShowDialog ( ) == D i a l o g R e s u l t . OK) { i f ( ( myStream = o p e n F i l e D i a l o g 1 . OpenFile ( ) ) != n u l l ) { t x t O u t . Text = o p e n F i l e D i a l o g 1 . FileName ; myStream . C l o s e ( ) ; } } }

Kumpulan kode diatas merupakan kode-kode yang digunakan untuk mendeklarasikan OpenFile-Dialog yang akan digunakan untuk mencari (bro-wse) file yang akan di proses oleh user. openFileDi-alog1.InitialDirectory = “C:\\” merupakan deklara-si yang berfungdeklara-si untuk menentukan home direcotry ketika OpenFileDialog pertama kali dibuka, itu berar-ti keberar-tika tombol browse maka default home directory pertama kali adalah drive C. Kemudian openFileDia-log1. Filter digunakan untuk mendeklarasikan jenis-jenis file yang dapat diproses dalam aplikasi ini, terli-hat pada kode diatas, di deklarasikan tipe-tipe file se-perti .Txt, .Doc, .Rtf, dan All Files pada file of type ke-tika openFileDialog digunakan. Kemudian openFile-Dialog1.FilterIndex = 1 berfungsi sebagai default da-ri tipe-tipe file yang ada pada file of type pada openFi-leDiaog. Jadi ketika pertama kali openFileDialog di-gunakan, file of type akan menunjukkan index arrray pertama sesuai dengan urutan pendeklarasian tipe fi-le diatas yaitu txt fifi-les|*.txt. kemudian pendeklara-sian yang terakhir, openFileDialog1.RestoreDirectory = true akan digunakan untuk mengembalikan posi-si directory pada openFileDialog ke poposi-siposi-si deklara-si InitialDirectory setelah digunakan oleh user. Jadi ketika openFileDialog akan digunakan lagi, posisi di-rectory kembali berada pada default InitialDidi-rectory yaitu drive C:\\ .

4

Kesimpulan

Algoritma Base64 dapat diimplementasikan pada .Net Framework dengan menggunakan Microsoft Vi-sual C# 2008 melalui 2 cara, yaitu pertama dengan menggunakan library yang telah di sediakan oleh .Net Framework, sedangkan yang kedua dimana im-plementasi yang dibuat tanpa menggunakan library yang disediakan oleh .Net Framework. Berdasarkan pada algoritma dan perancangan program, transfor-masi Base64 cocok digunakan untuk aplikasi kripto-grafi berbasis text dan file.

Pustaka

[1] http://www.c-sharpcorner.com.

(6)

[3] http://www.id.wikipedia.org/ wiki/ascii. [4] http://www.ketepeng.wordpress.com/2008/12/01/encripsi - dan-decripsi-password-menggunakan-metode-base64/. [5] http://www.microsoft.com/ expres-s/2005/download/.

[6] Dony Arivus. Pengantar Ilmu Kriptografi Teori, Analisis dan Implementasi. ANDI, Yogyakarta, 2008.

[7] Jaenudin. Belajar Sendiri .net dengan Visual C 2005. ANDI, Yogyakarta, 2006.

Referencias

Documento similar

Pada data rasio, ukuran menunjukkan posisi suatu objek dalam suatu skala paling rendah sampai skala yang paling tinggi, ada jarak atau interval antara posisi ukuran yang satu

 Persoalan yang melibatkan model matematika banyak muncul dalam berbagai disiplin ilmu pengetahuan, seperti dalam bidang fisika, kimia, ekonomi, atau pada

Penelitian sebelumnya menunjukkan bahwa spektroskopi FTIR dapat digunakan sebagai metode untuk analisis lemak babi, terutama dalam sistem makanan seperti pada kue dan produk

Menurut Budiardjo dalam buku Dasar- Dasar Ilmu Politik (2008), demokrasi yang dianut di Indonesia adalah demokrasi yang berdasarkan Pancasila yang masih terus berkembang dan sifat

Pada Audit Sistem Informasi diperoleh dari hasil kuesioner pada lampiran 8 yang merupakan metode pengumpulan data dengan tujuan untuk mengukurtingkat kematangan

Respon yang Diperlazimkan: merupakan perilaku terajar yang paling sederhana, pada dasarnya adalah respon sebagai hasil pengalaman, disebabkan oleh suatu stimulus

Data yang dieksplorasi dalam penelitian dititik beratkan pada data kualitas sensoris (warna, aroma, rasa, dan tekstur) yang diperoleh dari uji organoleptik dengan metode

Penis pria berbentuk batang dan merupakan organ untuk senggama bagi pria yang berfungsi untuk menyalurkan cairan mani (semen) yang mengandung sel-sel spermatozoa ke dalam