Anda di halaman 1dari 11

Enkripsi Base64: Pengertian, Manfaat, dan

Implementasi pada .NET

Base64 adalah istilah umum untuk sejumlah skema pengkodean serupa yang mengkodekan
data biner dan menerjemahkannya ke dalam representasi basis 64. Istilah Base64 berasal dari
konten pengkodean MIME tertentu. (Wikipedia, 2010)
Skema encoding base64 biasanya digunakan ketika ada kebutuhan untuk menyandikan data
biner yang perlu disimpan dan ditransfer melalui media yang dirancang untuk menangani data
tekstual. Hal ini untuk memastikan bahwa data tetap utuh tanpa perubahan selama pengiriman.
Base64 digunakan umum dalam beberapa aplikasi termasuk email melalui MIME, dan
penyimpanan data yang kompleks dalam XML.
Lalu mengapa kita harus belajar transformasi base64 dalam kriptografi ?Karena
Transformasi base64 banyak digunakan di dunia Internet sebagai media data format untuk
mengirimkan data. Dikarenakan hasil dari transformasi base64 berupa plaintext, maka nilai ini akan
jauh lebih mudah dikirim, dibandingkan format data berupa binary.
Selanjutnya, kita akan melihat beberapa pemakaian dari transformasi base64 di lapangan
seperti PEM, MIME, UTF-7, dan OpenPGP. (Agus Kurniawan, Konsep dan Implementasi
Cryptography Dengan .NET, 2008)
Privacy-Enhanced Mail (PEM)
Protokol PEM adalah protokol pertama kali yang menggunakan teknik transformasi base64,
yang didasarkan pada RFC 989 tahun 1987, yang terdiri dari karakter 7-bit yang digunakan oleh
server mail (SMTP) dalam transfer datanya. Sekarang versi PEM yang digunakan didasarkan pada
RFC 1421, yang menggunakan karakter (A..Z, a..z) dan bilangan (0..9) serta dua simbol, yaitu +
dan // .

Multipurpose Internet Mail Extention (MIME)


Multipurpose Internet Mail Extensions, menggunakan "base64" sebagai salah satu dari dua
skema pengkodean biner-ke-text (yang lainnya adalah "encoding Base64 quoted-printable"). MIME
ini didasarkan pada RFC 1421 versi PEM. Menggunakan 64-karakter alfabet yang sama dan
mekanisme encoding seperti PEM, dan menggunakan "=" simbol untuk output padding dengan cara
yang sama, seperti yang dijelaskan di RFC 1521. MIME tidak menentukan panjang tetap untuk
saluran Base64-encoded, tetapi tidak menentukan panjang maksimum 76 karakter. Selain itu
menetapkan bahwa setiap karakterabjad harus diabaikan oleh decoder kompatibel, walaupun
sebagian besar implementasi menggunakan pasangan CR / LF untuk membatasi baris yang
disandikan. Jadi, panjang aktual MIME-compliant data biner Base64-encoded biasanya sekitar
137% dari panjang data asli, meskipun untuk pesan yang sangat singkat overhead dapat jauh lebih
tinggi karena overhead dari header. Ukuran akhir data biner dikodekan Base64-sama dengan 1,37
kali ukuran data asli + 814 byte (untuk header). Dengan kata lain, Anda dapat perkiraan ukuran data
decode

dengan

rumus

ini:

byte

(string_length

(encoded_string)

814)

1,37

UTF-7
Encoding UTF-7 didasarkan pada RFC 2152, yang ada pada umumnya disebut sebagai
Modified Base64/ UTF-7 menggunakan karakter MIME base64, tetapi tidak memakai padding
=/ Karakter = digunakan sebagai karakter escape untuk encoding quotedprintable/ UTF-7
juga digunakan sebagai header MIME.
OpenPGP
OpenPGP (PGP Pretty Good Privacy) pada RFC 2440, yang menggunakan encoding 64radix atau kadang disebut sebagai !SCII !mor/ Teknik encodingnya didasarkan pada teknik
encoding dari MIME, tetapi ditambah dengan 24-bit CRC checksum. Nilai checksum dihitung dari
data input, sebelum dilakukan proses encoding.

ALGORITMA BASE64
Base64 menggunakan karakter A Z, a z dan 0 9 untuk 62 nilai pertama, sedangkan 2
nilai terakhir digunakan untuk symbol (+ dan /). Beberapa metode encoding lain seperti uuencode
dan binhex menggunakan 64 karakter yang berbeda untuk mewakili 6 binary digit, namun
metodemetode tersebut tidak disebut sebagai encoding Base64.

Tabel Encoding Base64

Penggunaan Base64
Berikut ini adalah contoh penggunaan dari MIME Base 64 dalam melakukan encoding karakter.
Kutipan dari Albert Einstein : Imajinasi lebih penting daripada pengetahuan
Hasil Transformasi :
SW1hamluYXNpIGxlYmloIHBlbnRpbmcgZGFyaXBhZGEgcGVuZ2V0YWh1YW4=
Kutipan dari Thomas Alfa Edison: Banyak orang yang sebenarnya sudah sangat dekat dengan
sukses tapi sayangnya, mereka kemudian menyerah
Hasil Transformasi:
QmFueWFrIG9yYW5nIHlhbmcgc2ViZW5hcm55YSBzdWRhaCBzYW5nYXQgZGVrYXQgZG
VuZ 2FuIHN1a3NlcyB0YXBpIHNheWFuZ255YSwgbWVyZWthIGtlbXVkaWFuIG1lbnllcmFo

CONTOH PENERAPAN ALGORITMA BASE64

Pada hasil encoding diatas kata Rio diganti menjadi Umlv/ Pada table !SCII huruf R, i, o
disimpan sebagai 82, 105, 111 atau dengan kata lain 01010010, 01101001, 01101111 pada bilangan
berbasis 2. Apabila ketiga byte tersebut digabungkan, maka akan dihasilkan 24 bit buffer yaitu
010100100110100101101111. Angka tersebut harus dikonversi sehingga berbasis 64, caranya
dengan membagi 24bit tersebut dengan 6. Maka dihasilkan 4 bagian dengan masing-masing 6bit.
Kemudian masing-masing bagian tersebut dikonversi ke nilai yang ada di Base64

Proses padding akan dilakukan apabila sekelompok karakter yang dimiliki tidak bernilai 3 Byte (24
bit). Padding dilakukan dengan menambahkan karakter =/ Contoh penggunaan padding dapat
dilihat pada tabel berikut.

Apabila terdapat singlebytemaka jumlah padding yang ditambahkan adalah 2 Byte yang bernilai 0.
Sehingga memenuhi aturan 3 Byte (24 bit), seperti dapat dilihat pada tabel di bawah ini. Sedangkan
pada tabel 4 jumlah byte padding yang ditambahkan adalah 1 Byte karena sebelumnya telah
memiliki 2 Byte.

Implementasi Pada .NET


Pada .NET Framewok encoding base64 telah disediakan. Sehingga kita tinggal memanggil
fungsinya untuk melakukan encode maupun decode.
Method dari object Convert

Kegunaan

Convert.ToBase64String(byte[])

Digunakan dengan mengubah hash kumpulan


byte menjadi string encoding base64, dengan teknik
transformasi base64

Convert.FromBase64String(stringBase64)

Digunakan dengan mengubah string hasil encoding


base64 kumpulan byte (decode)

Untuk membantu proses Encoding base64, kita juga memerlukan konversi dari String data ASCII
menjadi kumpulan byte ataupun sebaliknya. Kita bisa memanggil System.Text.Encoding.ASCII
Method dari object Convert

Kegunaan

System.Text.Encoding.ASCII.GetBytes(string)

Digunakan dengan mengubah data string

menjadi kumpulan byte


System.Text.Encoding.ASCII.GetString(bytes)

Digunakan dengan mengubah kumpulan


byte menjadi string berbasis ASCII

Berikut contoh code program untuk transformasi base64 pada .NET meggunakan bahasa C++:
//plaintext
String plaintext = Rio Purwanggono//plaintext ke 8-bit ASCII
byte[] bits = System.Text.Encoding.ASCII.GetBytes(plaintext);
//konversi bytes ke encoding 64
String base64 = Convert.ToBase64String(bits);
//Tampilkan hasil transformasi
Console.WriteLine("Plaintext:{0}", plaintext);
Console.WriteLine("Encoding 64-radix:{0}", base64);
Output Program :
PlainText: Rio Purwanggono
Encoding 64-radix: UmlvIFB1cndhbmdnb25v
Sedangkan untuk decode, kita menggunakan Convert.FromBase64String(stringBase64). Code
Programnya sebagai berikut :
//base 64 string base64 = UmlvIFB1cndhbmdnb25v;
//base64 ke 8-bit ASCII
byte[] bits=Convert.FromBase64String(base64);
//konversi 8-bit ASCII ke plaintext
string plaintext = System.Text.Encoding.ASCII.GetString(bits);
//tampilkan hasil transformasi
Console.WriteLine("Plaintext:{0}", plaintext);
Output Program : PlainText: Rio Purwanggono Latihan :
Encode nama Anda menjadi base64 secara manual, jika telah selesai lakukanlah decode atas hasil
encode base64.

Encripsi dan Decripsi Password menggunakan


metode Base64
Langkah langkah Encripsi menggunakan algoritma Base64
Contoh Mengubah kata M a n
1. Ubah huruf huruf yang akan di encripsi menjadi kode kode ASCII

2. Kode kode ASCII tersebut ubah lagi menjadi kode Biner

3. Bagi kode biner tersebut menjadi hanya 6 angka per blok dan berjumlah kelipatan 4 blok
4. Jika angka biner tidak berjumlah 6 angka dan 4 blok maka akan di tambah kode biner 0 sehingga
mencukupi menjadi 4 blok.
5. Blok blok tsb ubah kembali menjadi kode desimal (data di baca sebagai index)

6. Hasil kode index tersebut di ubah menjadi huruf yang ada pd index

7. Jika nilai blok adalah hasil tambahan (0) maka hasil dari index tersebut bernilai =
Contoh

langkah langkah Decripsi menggunakan algoritma Base64


1. Hasil dari Encripsi ubah menjadi Index

2. Ubah kode index menjadi kode2 biner (Bit Pattern)

3. Buat Blok tiap blok berisi 8 bit data

4. Rubah kode Biner menjadi ASCII kemudian String

5. Jika nilai sama dengan =

Index data

SUMBER :

http://www.gunadarma.ac.id/library/articles/graduate/computerscience/2009/Artikel_10105755.pdf

http://www.riopurwanggono.com/2011/12/konsep-dasar-base64/

http://en.wikipedia.org/wiki/Base64

Anda mungkin juga menyukai