HowTo : Setting Library Bouncycastle

5 11 2009

Well, hi ! Apa kabar para cryptographer di segala penjuru tanah air…  :D  Kali ini saya akan sedikit memasuki ranah Java Cryptography, tentunya tidak asing lagi bukan ? Saya akan membahas tentang Bouncycastle yang merupakan library Java Cryptography yang bersifat open source, silahkan cari lebih lanjut di http://www.bouncycastle.org

Bouncycastle ???  (*.*)7

Bagi rekan-rekan yang memang tertarik ke dunia programming dan juga dunia cryptography tentunya pasti dengan istilah Bouncycastle. Bouncycastle merupakan Java Cryptography APIs yang memiliki kapabilitas sebagai berikut :

  • Merupakan sebuag cryptography API yang ringan,
  • Sebuah provider untuk Java Cryptography Extension (JCE) dan Java Cryptography Architecture (JCA). Pengertian JCE dan JCA saya jelaskan lain waktu aja ya…
  • Merupakan ‘clean room implementation’ untuk JCE 1.2.1,
  • Merupakan library untuk membaca dan menulis objek-objek pada encoded ASN.1,
  • Merupakan client-side TLS API yang ringan,
  • Generator untuk Digital Certificate X.509 versi 1 dan versi 3, Certificate Revocation CRL versi 2 , dan juga file-file PKCS12. BTW kalau belum tahu, ini adalah atribut pada Public Key Infrastructure (PKI),
  • Generator untuk atribut pada Digital Certificate X.509 versi 2,
  • Generator/Processor untuk S/MIME and CMS (PKCS7/RFC 3852),
  • Generator/Processor untuk OCSP (RFC 2560),
  • Generator/Processor untuk TSP (RFC 3161),
  • Generator/Processor untuk OpenPGP (RFC 2440),
  • Membuat file jar yang telah di-signing, namun hanya ada di versi JDK 1.4-1.6 dan Sun JCE.

Jadi dengan adanya library ini, kita bisa memanfaatkan class-class cryptography tersebut untuk melakukan proses-proses kriptografi, seperti enkripsi, dekripsi, signing, digest, dan sebagainya tanpa harus men-coding-nya dari awal. Asyik kan ?

How To Install ???  (^,^)

Hehe, mungkin inilah pertanyaan yang paling menarik kemudian. Karena setting awal merupakan langkah awal dalam pendayagunaan library ini untuk kepentingan pembelajaran, sebagai newbie di bidang cryptography tentunya.

Pastinya sudah install JDK dan juga software Netbeans kan ? (Oh ya, penulis sendiri lebih akrab dengan Netbeans ketimbang Eclipse) Sekarang silahkan download crypto – 141.zip (atau seri yang terbaru juga boleh) dari website Bouncycastle kemudian di-unzip. Perlu diketahu bahwa file zip ini sudah berisi banyak file yang kita butuhkan, termasuk didalamnya JCE, provider, light weight API, J2ME, JDK1.2, JDK1.1, and class-class yang kompatibel pada JDK1.0, dan juga file jar yang sudah ter-signed. Kemudian ikuti langkah-langkah sebagai berikut :

  1. Misalkan file zip tersebut saya unzip di direktori F:\crypto-141, maka pada direktori F:\crypto-141\jars akan terdapat beberapa file jar dan pada direktori F:\crypto-141\zips akan terdapat tiga file zip.
  2. Copy file bcprov-jdk16-141 ke dua lokasi yang berbeda (BTW bcprov-jdk16-141 dipilih dari sekian file jar yang ada penulis meng-install J2SE 1.6.0_11.) :  di lokasi J2SE SDK di C:\Program Files\Java\jdk1.6.0_11\jre\lib\ext, dan di lokasi J2SE RunTime di C:\Program Files\Java\jre6\lib\ext.
  3. Edit file java.security yang berada di dua lokasi yang berbeda : di lokasi J2SE SDK di C:\Program Files\Java\jdk1.6.0_11\jre\lib\security, dan di lokasi J2SE RunTime di C:\Program Files\Java\jre6\lib\security. Adapun edit yang dilakukan adalah berupa penambahan list provider yang digunakan, yaitu Bouncycastle, sebagaimana yang diilustrasikan pada gambar berikut :     bouncycastle_1
  4. Yang terakhir, tes apakah provider tersebut telah benar-benar ter-install pada Netbeans anda, caranya :

import java.security.Security;
public class SimpleProviderTest {
public static void main (String[] arg){
String providerName = “BC”;
if (Security.getProvider(providerName) == null){
System.out.println(providerName + ” provider not installed”);}
else {
System.out.println(providerName + ” is installed”); }
}
}

Jika pada Command Console didapatkan hasil berupa “BC is installed”, maka bouncycastle telah selesai  di-install. Congratz… :D








Follow

Get every new post delivered to your Inbox.