Encrypt dan decrypt merupakan pekerjaan wajib bila kita berkomunikasi dengan jalur jaringan, apalagi jika jaringan yang kita gunakan adalah jaringan public tanpa keamanan. Kemarin saya mendapat "Job" untuk membuat program untuk mengengkrip (versi indonesianya encrypt) data. Kalau anda menguasai PHP, maka yang pertama di pikiran anda adalah fungsi md5()-nya PHP, memang benar itu juga yang pertama kali muncul di pikiran saya. Tapi kemudian saya berpikir terus bagaimana cara untuk menampilkan dekripnya? Belum ketemu sampai sekarang.
Saya juga punya CodeExplorer Ultimate Arsenal for Delphi programming, kumpulan ribuan tips dan trik delphi yang dikumpulkan menjadi satu program. Banyak juga trik untuk mengengkrip inputan, sayang metodenya terlalu sederhana disamping kodingnya masih belepotan. Yang ada hanya mengengkrip dengan merubah perkarakter menjadi 3 (atau berapapun) karakter sesudahnya, sebagai catatan algoritma ini pernah saya gunakan untuk membuat program mirip notepad dengan fungsi enkrip tulisan.
Kurang puas rasanya kalau enkripnya terlalu sederhana seperti itu, mudah sekali untuk ditembus. Finally, saya merujuk juga ke paman Google dengan keyword "encrypt and decrypt with java". Kenapa "... with java"? ya karena itu bahasa pemrograman yang sedang saya pelajari, jadi sekalian memperdalam ilmu githu... Binggo...!!! Ini dia hasilnya.
Ah ketemu juga dan (seperti biasanya) terlampau banyak. Cari and cari, ketemu tuh website kodejava.org,
devx.com, dan ini dia forum.java.sun.com. Masih banyak yang lain, tapi tidak perlu saya sebutkan satu persatu. Semuanya memberikan contoh enkrip dan dekrip menggunakan Java mulai dari yang paling sederhana sampai yang sangat rumit. Dan pilihan saya jatuh pada sumber yang berasal dari forum.java.sun.com. Source Codenya seperti di bawah ini :
import java.security.*;
public public static byte [] encrypt (String passphrase, byte [] data) throws Exception { byte [] dataTemp; try { Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding"); //logger.error("[com.pm.util.directorio.DESEncryptor][encrypt] Se produjo una excepción durante la encriptación: "+e); throw e; } return dataTemp; public static byte [] decrypt (String passphrase, byte [] data) throws Exception { byte [] dataTemp; //PMLogger logger = new PMLogger(PMLoggerConstants.DEFECTO); try { Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding"); } //logger.error("[com.pm.util.directorio.DESEncryptor][decrypt] Se produjo una excepción durante la desencriptación: "+e); throw e; } return dataTemp; } public static void main(String[] args) throws Exception { // Datos de entrada: String sClave = new String (args[0]); System.out.println("CLAVE: " + sClave); // Encriptación ba = DESEncryptor.encrypt (sClave, ba); // Desencriptación ba = DESEncryptor.decrypt (sClave, ba); } } |
Komentarnya pake bahasa aneh ya? Yach namanya juga ngopy, ngalah dong.... bagaimanapun kan mereka yang buat kita tinggal make, bener nggak?
Saya pilih yang ini karena codingnya sederhana dalam arti mudah diimplementasikan dan direnovasi tanpa harus mengetahui logikanya secara pasti, dan juga hasilnya lumayan bagus. Ditambah lagi penggunaan passphrase (ehm ehm "Clave") yang fleksibel, semakin lengkap sudah kemampuan enkripnya.
What's the code means? Jangan tanya saya, saya juga ada beberapa baris yang nggak tahu maksudnya. The big deal is, kodingnya sudah cukup dan bisa digunakan untuk keperluan enkrip dan dekrip. Tinggal buat instance classnya, panggil method encrypt(arg0, arg1); dan method decrypt(arg0, arg1); kalau masih kurang, kalo perlu buat static aja dan (as i do) rubah parameternya menjadi String semua nah malah lebih enak digunakan, ya tho....?
Komentar