Simulasi Enkripsi-Dekripsi AES Menggunakan Library Bouncy Castle

10 12 2009

Hai guys ! Apa kabar ? Hehe… Senang sekali bisa menyapa rekan-rekan penggemar Kriptografi dan Java di sini. Kali ini saya akan sedkit menyinggung tentang hal-hal yang berhubungan dengan Kriptografi dan juga Java.

BTW kalau boleh jujur, entry blog ini saya dedikasikan untuk salah seorang pengunjung blog ini yang sepertinya begitu penasaran mengenai cara penggunaan library Bouncy Castle. Tapi karena pengunjung tersebut tidak mendeskripsikan dengan jelas mengenai algoritma coding seperti apa yang diinginkan, maka dari itu saya bikin yang versi saya, hehe… ga papa ya ? :D

Di source code Java ini saya menggunakan algoritma kriptografi simetrik AES atau algoritma Advanced Encryption Standard. AES adalah algoritma simetrik berbasis block cipher yang mengenkripsi/mendekripsi blok berukuran 128 bit dengan panjang kunci yang beragam, yaitu 128, 192, dan 256 bit. Sehingga dikenal tiga tipe AES berdasarkan panjang kuncinya, yaitu AES-128, AES-192, dan AES-256. AES tidak berorientasi bit melainkan berorientasi byte sehingga implementasi AES ke hardware maupun software menjadi efektif.

Secara garis besar, algoritma AES adalah sebagai berikut :

  1. AddRoundKey, yaitu melakukan XOR antara state awal (plainteks) dengan cipher key. Tahap ini juga disebut sebagai initial round.
  2. Putaran sebanyak Nr – 1 kali. Proses yang dilakukan pada setiap putaran adalah :

a.  SubBytes, yaitu substitusi byte dengan menggunakan table substitusi (S-box),

b.  ShiftRows, yaitu pergeseran baris-baris array state secara wrapping,

c.  MixColumns, yaitu mengacak data di masing-masing kolom array state, dan

d.  AddRoundKey, yaitu melakukan XOR antara array state dengan round key.

3. Final round, yaitu proses untuk putaran terakhir yang meliputi :

a.   SubBytes,

b.   ShiftRows, dan

c.   AddRoundKey.

Untuk mempermudah pemahaman source code ini, saya akan menggunakan kunci statik “1234567812345678123456==” sehingga variabel yang dinamis adalah plaintext dan ciphertext-nya.  Source code ini juga hanya menggunakan output windows dari Netneans, jadi tinggal di-compile dan di-run saja filenya.  Untuk melakukan opsi yang kedua, yaitu decryption silahkan digunakan ciphertext hasil encryption sebelumnya karena source code ini hanya akan menjalankan satu opsi saja, yaitu encryption saja atau decryption saja.

Silahkan download file-nya di sini. Selamat mencoba.


Actions

Information

27 responses

30 01 2010
ahmad

assalamualaikum

salam kenal mbak restia,,
nama saya ahmad,,

sebelumnya terimakasih atas tulisan2nya tentang kriptografi yg sungguh bermanfaat….

mbak saya sedang membuat penelitian tentang kriptografi j2me sms,,,

sebagai syaratnya diffie hellman sebagai pertukaran kuncinya….

mbak bisa minta tolong gak mbak membuatkan simulasinya dalam j2me pertukaran kunci diffie hellman tersebut pada sms,,,

soalnya saya bener2 baru (beginner dalam pemograman ini)…

setidaknnya saya mau belajar dulu dari mbak restia yang udah paham dengan kriptografi ini,,,,

pertolongannya dihrapkan y mbak,,,
makasih sebelumnya,,

wassalam…..

1 02 2010
reeshtea

Wa’alaikumsalam, wr,wb…
Kalau kriptografi di J2ME (SMS) memang saya pernah coba-coba, tapi kalau pake algor Diffie-Hellman trus terang belum pernah, hehehe…
Trus mengenai Diffie-Hellman yang saya tahu masih utk yang basisnya J2SE bukan J2ME, kebetulan saya pakai library Bouncy Castle jadi tipe codingnya agak berbeda… kesimpulannya saya belum pernah coba, tapi boleh juga untuk dipelajari, kita coba sama-sama ya… insya Allah kalau ada waktu akan saya kasih postingan tentang ini .
Biasanya sih buat tahu cara pakai algoritma kriptografi di J2ME, saya searching dulu di internet bagaimana tipe codingnya dengan Bouncy Castle trus saya modif dengan algoritma yg saya punya. Next masuk ke SMS biasa kalau sudah sukses SMS biasanya, baru datanya dimodif dengan algoritma Kriptografi. Begitu mas…
Jadi harus coba-coba… ngga bisa instant. Insya Allah kalau ada waktu saya bantu, hehehe… tapi ngga pake janji ya… :)

2 02 2010
ahmad

assalamualaikum,wrb.wb…

oh gitu ya mbak resti…
okelah kalo begitu…

makasih ya mbak mau bantu2 nyari…..
mbak sebenernya gak mesti diffie hellman sih mbak… untuk pertukaran kuncinya,,,,
saya masih bingung ja mbak pertukaran kunci yang pas di j2me untuk sms itu apa ya,,, apa mungkin RSA atau algor yg lainnya???

Sekali lagi makasih ya mbak atas pengetahuan dan responnya….
saya doakan mbak lancar trus dalam kehidupannya,,,
baik didunia maupun diakherat….

oklah kalo gitu,,, sya akan berusaha lagi…
THANKS :)

wassalam.,

3 02 2010
reeshtea

Wa’alaikum salam,wr,wb…
Yang aku punya hanya Diffie-Hellman utk aplikasi Java biasa, J2SE pake Boncy Castle. Tapi untuk J2ME dengan Bouncy Castle tipe coding nya agak beda dengan yang J2SE, biasanya sih aku cari dulu di internet tipe coding nya. Lalu aku modif untuk coding dengan J2ME.
Perlu diperhatikan juga Bro, kalau untuk J2ME instalasi Bouncy Castle nya pake library yang formatnya *.jar . Jadinya langsung import *.jar nya, tidak sama dengan instalasi Bouncy Catle yang di J2SE.
Insya Allah kalau ada waktu, saya akan explore tentang Diffie-Hellman dan akan saya posting di blog ini juga. Setahuku untuk pertukaran kunci yang paling sederhana memang pake Diffie-Hellman, yang lain bisa juga sih… banyak lagi tipenya koq tapi bisasnya lebih rumit.
Amin, thanks banget atas doanya. Sukses juga ya buat Ahmad.

6 02 2010
ahmad affandi

assalamualaikum mbak resti…
pa kabarnya???
kok udah jarang nulis di blog??
^__^…
Mbak sekarang lagi sibuk2nya ya????
kira2 kpan ya Mbak ad waktu???

8 02 2010
reeshtea

Iya nih Bro.. paling ngga setelah tanggal 23 Februari ini lah.
Ntar kita diskusi lagi ya… lewat YM juga bisa. See ya !

3 05 2010
andreasVictor

hmmm artikel ini sangat membantu saya dalam pembuatan tugas akhir…
tapi ada yang mau saya tanyakan,
untuk library Bonci Castle sendiri bagaimana penggunaannya jika untuk diimplementasikan enkripsi data dalam database ?
mungkin kakak ada refrensi???

terima kasih

6 05 2010
hani

mbak..boleh minta gak source code enkripsi menggunakan library Boncy Castle….
kirim ke email saya: biru_hani@yahoo.com
terima kasih…

6 05 2010
15 06 2010
zhilal

mba’… mw tanya nih.. klw untuk ke mobilenya itu sama aja atau ada yang musti di rombak codingan yang mba’ kasih… yang gunain aes di mobile… ??
coz, saya searching2 katanya beda untuk di mobile..
klw beda.. boleh minta contoh codingannya ga.. ??

Thx b4….

15 06 2010
reeshtea

Bedanya yaitu kita harus menyediakan library Bouncy Castle dalam bentuk *.jar yang diletakkan dalam project mobile yang sama. Dengan demikian saat meng-install aplikasi mobile yang siap pakai dalam bentuk *.jar, maka aplikasi akan tetap dapat mengakses library tersebut.

22 06 2010
zhilal

haduh k’ ga bisa.. malah error…

Building “Test”
Error preverifying class org.bouncycastle.jce.interfaces.GOST3410PrivateKey
java/lang/NoClassDefFoundError: java/security/PrivateKey
Build failed

k’… boleh saya Add YM kk ??
mw tanya2 nih untuk TA …

23 06 2010
reeshtea

Oh, masa sih ?
Yang di running cuma 1 (satu) file itu aja lho…
Boleh add YM saya di reesh_sitigirl_cs. See ya, sukses ya TA nya.

21 07 2010
ian88

mbak klo coding diatas mau dipake buat encrypt sms gmn caranya? coding2nya apa yg perlu diganti? thx atas bantuannya

21 07 2010
reeshtea

Hmm, yang pasti sebelum data ‘message’ itu dikirim, dilewatkan ke coding enkripsi dulu.. baru deh dikirim. Segitupun pada sisi penerimanya, sebelum masuk ke inbox, datanya dilewatkan dulu ke coding dekripsi.
Demikian, Bro.

22 07 2010
ian88

ok deh mbak, ntar klo ada kesulitan aq tanya lagi yah, thx

18 12 2010
vieszcy

kk maaf kodingnya mana? saya sudah coba mengikuti link yang kk kasih, tapi ternyata blank.. minta pencerahannya .. thx b4 ^^.. salam kenal…

13 03 2011
reeshtea

Maaf, baru dicek ternyata akunya inactive ya ?
Sekarang sudah di-upload lagi, silahkan… http://www.4shared.com/file/A5mMDJyV/AES_Algorithm.html

12 03 2011
Eka Chan

Terimak kasih kak reestea atas penjelasannya yang
sangat bermanfaat bagi TA saya, tapi link diatas
tidak dapat saya buka,, bolehkah saya minta lagi source code enkripsinya mbak,,
terima kasih bantuannya kak,,

13 03 2011
reeshtea

Iya, sama-sama Eka Chan.
Maaf, baru dicek ternyata akunnya inactive ya ?
Sekarang sudah di-upload lagi, silahkan… http://www.4shared.com/file/A5mMDJyV/AES_Algorithm.html

12 04 2011
defrina

Mbak kita udah ngejalanin di netbeansnya , tapi banyak banget errornya.
Bingung juga salahnya dimna mbak,..
Apa itu tanda BC-nya belum terinstal dengan baik ya ??

Kalo Dijalanin di WTK bsa g ya mbak kira2 ???

13 04 2011
reeshtea

Salah satu cara buat men-debug error khususnya untuk pemula : Google. Caranya copy-paste aja errornya ke Google lalu cari tahu caranya lewat forum-forum. Kalau untuk cari tahu bagaimana cara install BC, lihat postingan ini : http://reeshtea.wordpress.com/2009/11/05/howto-setting-library-bouncycastle/
Jalanin di WTK ? blm pernah coba tuh untuk yang BC, sepertinya sih bisa…

14 02 2012
Kartika Septianingrum

assalamualaikum mba kalo algoritma aes ini diterapin buat kripto di sms bisa ga ya kira-kira?

15 02 2012
Restia Priwardani

wa’alaikmsalam… bisa aja Kartika algoritma kriptografi seperti AES diterapkan di SMS, tapi content SMS bisa menjadi lebih dari 160 karakter.

23 02 2012
Kartika Septianingrum

library bouncy castle itu bisa dipake di coding j2me ga ya mba? aku kan buat kripto sms pke j2me tuh..

24 02 2012
Restia Priwardani

bisa koq, coba aja… aku dulu juga untuk coding J2ME.

11 03 2012
Gita

Mba kok ini link nya ga bisa ya mba? http://www.4shared.com/file/A5mMDJyV/AES_Algorithm.html
saya mau tanya, library ini bisa digunakan di mobile android ngga? karna saya mau buat disana mba :D
thanks in advance

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s




Follow

Get every new post delivered to your Inbox.