Minggu, 13 Februari 2011

5

Enkripsi Base64: Pengertian, Manfaat, dan Implementasi pada .NET

  • Minggu, 13 Februari 2011
  • Nurkholish Ardi Firdaus
  • Share
  • 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 64-radix 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.
    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: “QmFueWFrIG9yYW5nIHlhbmcgc2ViZW5hcm55YSBzdWRhaCBzYW5nYXQgZGVrYXQgZGVuZ 2FuIHN1a3NlcyB0YXBpIHNheWFuZ255YSwgbWVyZWthIGtlbXVkaWFuIG1lbnllcmFo“
    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.

    Jangan Lupa Komentar Yaa..
    Related Posts Plugin for WordPress, Blogger...

    5 Komentar Untuk “Enkripsi Base64: Pengertian, Manfaat, dan Implementasi pada .NET”

    Anonim mengatakan...

    Jumat, 04 Maret 2011 pukul 23.45.00 WIB Reply To This Comment

    bagaimana coding untuk vb.net2005??


    Anonim mengatakan...

    Sabtu, 05 Maret 2011 pukul 02.00.00 WIB Reply To This Comment

    oh sudah bisa mas,,hehe,,

    makasih


    Nurkholish Ardi Firdaus mengatakan...
    Sabtu, 05 Maret 2011 pukul 05.13.00 WIB Reply To This Comment

    @Anonim hehehe,, bgus deh klo bgitu... happy coding...


    intan aprilliani mengatakan...
    Senin, 30 September 2013 pukul 17.21.00 WIB Reply To This Comment

    mkasih banyak share ilmunya,,,


    Unknown mengatakan...
    Sabtu, 19 Juli 2014 pukul 02.20.00 WIB Reply To This Comment

    lumayan sedikit ngerti , mampir juga nih http://sonytutorial.blogspot.com/


    Posting Komentar

    Berikan komentar positif tentang artikel yang sederhana ini niscaya sobat akan mendapatkan balasannya. Hehehe

    Subscribe