This is default featured slide 1 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

Showing posts with label Programming. Show all posts
Showing posts with label Programming. Show all posts

Friday, February 11, 2011

Hash MD5 di java

dalam database biasanya udah ada fungsi Hashnya, Hash yang paling terkenal adalah MD5. di java juga ada method untuk mendapatkan Hash. Yaitu MessageDigest. cara pengunaanya cukup mudah. berikut adalah contoh function untuk mendapatakan Hash tipe MD5 dengan java :


public static String getMD5_Hash(String text) throws NoSuchAlgorithmException, UnsupportedEncodingException{
String retval = null;
MessageDigest md;
md = MessageDigest.getInstance("MD5");
byte[] md5hash = new byte[32];
md.update(text.getBytes("iso-8859-1"), 0, text.length());
md5hash = md.digest();
return convertToHex(md5hash);
}


Dalam MessageDigest dikenal beberapa Hash antara lain : MD5, MD2, SHA-1, SHA-256, SHA-384, SHA-512.
Jadi kalo mau ganti method / program di atas menjadi Hash SHA-1 tinggal ganti aja


md = MessageDigest.getInstance("MD5");

Menjadi


md = MessageDigest.getInstance("SHA-1");


Begitu juga kalo memakai jenis Hash Yang lain
Share:

Algoritma hash MD5

Dalam ilmu kriptografi, MD5 (Message Digest Algorithm version 5) adalah salah satu algoritma hash yang paling populer. Hash atau hashing sendiri adalah proses perubahan suatu data menjadi data lain dengan panjang tertentu, sedemikian sehingga data itu tidak dapat dipulihkan kembali. Teknik ini biasa digunakan dalam enkripsi data, misalnya untuk menyimpan password agar tidak ada yang dapat mengetahuinya meskipun dia dapat melihat hash dari password itu.

Sebenarnya istilah “enkripsi” tidaklah tepat karena jika data itu dienkripsi, pastilah ada cara untuk dekripsi untuk mendapatkan kembali data yang disembunyikan itu. Sedangkan hash, seperti disebutkan di atas, adalah proses yang irreversibel (tidak ada istilah de-hash atau un-hash). Artinya data yang sudah di-hash tidak dapat dipulihkan kembali menjadi seperti data awal. Ibaratnya, jika data dianggap sebagai kayu, maka algoritma hash adalah proses membakar kayu itu menjadi abu. Tentu saja kita tidak dapat mengubah abu itu menjadi kayu kembali.

Algoritma hash MD5 sendiri menerima input berupa data dengan panjang bebas, dan menghasilkan output heksadesimal sepanjang 32 karakter. Jadi, seberapapun panjang data input, output yang dihasilkan akan selalu sepanjang 32 karakter. Perubahan sedikit saja di input akan mengubah output dengan drastis. Sebagai contoh:

Input: Test
Output: 0cbc6611f5540bd0809a388dc95a615b

Misalkan kita ubah input dengan huruf kecil:

Input: test
Output: 098f6bcd4621d373cade4e832627b4f6

Terlihat bahwa perubahan input sedikit saja akan mengubah output secara keseluruhan. Karena sifat ini, algoritma ini sering dimanfaatkan untuk mengecek integritas atau keutuhan suatu data. Mungkin saat kita hendak men-download file-file besar sering juga disertai “MD5 checksum” dari file itu. Ya, dengan mengecek MD5 hash dari file yang kita download, kita dapat mengetahui apakah file yang kita peroleh sempurna atau rusak, karena kerusakan paling kecil saja akan mengubah MD5 checksum dari file itu.

Manfaat lainnya adalah dalam penyimpanan password. Seperti disebutkan di awal, bahwa MD5 sudah menjadi standar de facto untuk pengamanan password. Password yang tersimpan di database adalah dalam bentuk MD5 hash-nya, sehingga meskipun seseorang bisa menerobos masuk ke database untuk mencuri password, mereka tidak dapat melihat password aslinya karena yang mereka dapatkan hanyalah hash-nya.

Namun demikian, algoritma ini bukanlah yang paling aman. Beberapa sumber menyebutkan bahwa algoritma ini dapat ditembus (walaupun tidak dengan mudah) dengan metode collision dengan rainbow table. Saya juga tidak tahu persis, yang jelas dengan cara ini seseorang dapat mencari data lain yang memiliki nilai hash yang sama. Karena itu, sekarang dikembangkan algoritma hashing baru yang disebut SHA (Secure Hash Algorithm). Namun, bagaimanapun juga, MD5 tetap yang paling banyak digunakan saat ini.

Sejarah
MD5 adalah salah satu dari serangkaian algortima message digest yang didesain oleh Profesor Ronald Rivest dari MIT (Rivest, 1994). Saat kerja analitik menunjukkan bahwa pendahulu MD5 — MD4 — mulai tidak aman, MD5 kemudian didesain pada tahun 1991 sebagai pengganti dari MD4 (kelemahan MD4 ditemukan oleh Hans Dobbertin).

Pada tahun 1993, den Boer dan Bosselaers memberikan awal, bahkan terbatas, hasil dari penemuan pseudo-collision dari fungsi kompresi MD5. Dua vektor inisialisasi berbeda I dan J dengan beda 4-bit diantara keduanya.

MD5compress(I,X) = MD5compress(J,X)

Pada tahun 1996 Dobbertin mengumumkan sebuah kerusakan pada fungsi kompresi MD5. Dikarenakan hal ini bukanlah serangan terhadap fungsi hash MD5 sepenuhnya, hal ini menyebabkan para pengguna kriptografi menganjurkan pengganti seperti WHIRLPOOL, SHA-1 atau RIPEMD-160.

Ukuran dari hash — 128-bit — cukup kecil untuk terjadinya serangan brute force birthday attack. MD5CRK adalah proyek distribusi mulai Maret 2004 dengan tujuan untuk menunjukka kelemahan dari MD5 dengan menemukan kerusakan kompresi menggunakan brute force attack.

info lebih lanjut buisa merujuk kesini
Share:

Saturday, October 24, 2009

Don’t Code Today What You Can’t Debug Tomorrow

Membuat suatu program aplikasi memiliki seni tersendiri. Ada yang mengatakan bahwa programming merupakan “seni mendebug selembar kertas kosong”. Mendebug selembar kertas kosong ternyata lebih mudah, karena yang kita pikirkan adalah bagaimana cara menulisi kertas kosong itu dengan ide-ide program yang ada pada otak kita. Tidak ada desain yang jelek, tidak ada masalah legal (misal ketika membuka kode orang). Semuanya dimulai dari nol.
In the other hand, ketika suatu aplikasi harus dirawat, mau tidak mau kita akan melalui suatu perkara yang disebut sebagai debugging.

Membaca ulang kode dan memperbaiki kesalahan-kesalahan yang ada adalah hal yang cukup pelik. Masih mending kalau kita membaca ulang kode yang kita buat sendiri sebelumnya. Kalau kita membaca ulang kode orang lain, kadang ketidakcocokan gaya penulisan kode dapat membuat kita terjerumus ke dalam hal-hal yang menyesatkan, semacam ‘mengeluarkan sebagian isi kebun binatang‘, karena bisa dibuat puyeng oleh gaya penulisan yang berbeda tersebut.

Ternyata, merawat program cenderung memerlukan otak yang lebih encer daripada membuatnya, karena pada fase ini, programmer tunag debug harus mereview dan membaca alur program melalui kode-kodenya, dan harus mengetahui setiap elemen-elemen di dalamnya. Pada perkembangannya perawatan program aplikasi akan menuntut kepada kebutuhan yang bermacam-macam. Tak jarang permintaan tambahan semacam tambal sulam, sehingga program aplikasi yang dibuat semakin berkembang karena adanya permintaan penambahan fasilitas.

Kalau kita membuat aplikasi dari awal dan memerlukan semacam API, seandainya kita tidak mengerti, kita bisa diberi pilihan untuk mempelajarinya atau mencari API lain yang kita mengerti. Kalau kita mengelola aplikasi yang sudah ada, mau tidak mau kita harus mengerti cara kerja API yang telah diimplementasikan di dalam kode program atau kalau kita tidak mau mempelajarinya kita harus membuat aplikasinya dari awal dengan API yang kita mengerti. It’s complicated!

Belum lagi customer tidak mau tahu dengan permasalahan seperti ini. Apabila pada hari ini aplikasi yang dibuat dapat berjalan baik, tetapi kita sebagai programmer tukang debugnya tidak tahu mengapa program bisa berjalan dengan lancar, maka pada suatu hari nanti akan terjadi permasalahan yang lebih besar ketika progam aplikasi yang dikelola tersebut menjadi macet. Jadi, tugas utama dari programmer pengelola aplikasi adalah mengetahui semua seluk beluk aplikasi yang dibangun.

Keuntungan mengelola program aplikasi:

  1. Belajar mengerti orang lain, terutama untuk program aplikasi yang dibangun oleh orang lain, tukang debug harus memahami alur kerja yang telah dibuat oleh orang lain. Kalau program aplikasi itu dibuat sejak awal oleh tukang debugnya sendiri, mungkin akan lebih mudah.
  2. Belajar berkolaborasi. Programmer lain belum tentu memiliki gaya penulisan program yang sama dengan tukang debugnya. Melalui hal ini masing-masing individu dapat belajar untuk mau mengerti gaya orang lain.

Memang boleh dikatakan bila menjadi tukang debug perangkat lunak tidak secemerlang menjadi arsitek perangkat lunak yang membuatnya dari nol. Namun demikian, kunci dari keberhasilan suatu program aplikasi terletak pada bagaimana progam tersebut digunakan, sehingga peran dari tukang debug yang mengelola aplikasi menjadi sangat penting. Bukan tidak mungkin seiring berjalannya waktu, program aplikasi yang dibuat berkembang di luar rancangan awal karena harus menyesuaikan kebutuhan, dan hal itu menjadi tanggungjawab dari tukang debugnya.

Saya kira tidak salah apabila tukang debug adalah seorang pahlawan di bidangnya, karena jalannya suatu sistem salah satunya tergantung pada siapa yang mengelolanya.
Share:

Followers

Total Pageviews

Definition List

Unordered List

Support