# Hack Your Skills! to be Professional Mechatronics
Semoga bermanfaat. :)
Java : Enkripsi SMS Menggunakan Message Authentication Code (MAC) Algoritma RC4
ElangSakti
Algoritma RC4
,
Enkripsi Pesan
,
Informatika
,
Java
,
Message Authentication Code (MAC)
,
Scrap of Scripts
4 komentar
Suatu ketika kita tidak ingin pesan rahasia kita (misal SMS) dibaca oleh orang lain. Atau kita tidak ingin pesan kita disadap kemudian dipalsukan. Untuk itu, pesan rahasia kita harus dikirim dengan cara yang benar. Untuk itu, kita harus memastikan dan melakukan otentifikasi bahwa pesan yang kita kirim itu tidak berubah dan pengirim yang benar. Ada dua teknik untuk melakukan otentikasi pesan, yaitu menggunakan Message Authentiation Code (MAC) dan menggunakan Digital Signature. Pada tulisan ini kita akan membahas implementasi MAC.
MAC adalah fungsi hash satu-arah yang menggunakan kunci rahasia dalam pembangkitan nilai hash. Maksudnya kita akan mempunyai kunci untuk mengirim dan membuka pesan rahasia yang sudah dienkripsi. Pembuatan MAC dapat dibangun dengan algoritma enkripsi pesan yang berbasiskan aliran (cipher aliran). Sebab, pada prinsipnya MAC akan membangkitkan suatu nilai acak yang konstan untuk semua panjang pesan dengan suatu kunci rahasia. Pada kasus ini, MAC akan dibuat dengan algoritma Rivest Code 4 (RC4).
Pemilihan Algoritma RC4 disebabkan karena algoritma ini sederhana dan mudah untuk diimplementasikan, serta sudah dipergunakan secara luas pada sistem keamanan seperti protokol SSL (Secure Socket Layer). Algoritma ini juga dinyatakan aman dan mempunyai proses enkripsi yang cepat karena proses enkripsinya cukup sederhana dan hanya melibatkan beberapa operasi per byte-nya.
RC4 membangkitkan aliran kunci (keystream) yang kemudian di-XOR-kan dengan plainteks pada waktu enkripsi (atau di-XOR-kan dengan bit-bit cipherteks pada waktu dekripsi). Tidak seperti cipher aliran yang memproses data dalam bit, RC4 memproses data dalam ukuran byte (1 byte = 8 bit). Berikut ini adala contoh source code dalam java untuk membangkitkan MAC menggunakan algoritma RC4.
/* RC4 and MAC with Java * coder: haripinter * mail : haripinter/@/gmail/./com */ class arcfour{ public static int size = 256; public static int[] S = new int[size]; public static String key256(String k){ //bentuk 256 key String buff = null; if(k.length() < size){ int x = 0; for(int i=0; i<size; i++){ if(x >= k.length()){ x = 0; } buff = buff+k.charAt(x); x++; } } return buff; } public static void permutasi(String key){ //inisialisasi for(int i=0; i<size; i++){ S[i] = i; } //permutasi int j = 0; for(int i=0; i<size; i++){ j = (j + S[i] + key.charAt(i))%size; //swap int buff = S[i]; S[i] = S[j]; S[j] = buff; } } public static String encrypt(String text, String key){ String k = key256(key); permutasi(k); String buff = ""; int i=0, j=0; for(int x=0; x<text.length(); x++){ i = (i+1)%size; j = (j+ S[i])%size; //swap int buf = S[i]; S[i] = S[j]; S[j] = buf; int t = (S[i]+S[j])%size; char K = (char)S[t]; buff = buff+(char)(K^text.charAt(x)); } return buff; } public static String getMAC(String teks, int[] s, String konci){ String key = key256(konci); permutasi(key); String buff = "", tmp = ""; int sizeMAC = 0; int div = teks.length() / 8; if((teks.length() % 8 ) == 0){ sizeMAC = div; }else{ sizeMAC = div+1; } int bit = 0; int i = 0, j = 0, k = 0; for(int x=0; x<teks.length(); x++){ String ba = Integer.toBinaryString(teks.charAt(x)); tmp = tmp+ba.charAt(4); bit++; if((x == teks.length()-1) && bit<8){ tmp = String.format("%8s", tmp).replace(' ', '0'); bit = 8; } if(bit == 8){ i = (i+1)%size; j = (j+S[i])%size; int buf = S[i]; S[i] = S[j]; S[j] = buf; int t = (S[i]+S[j])%size; char K = (char)S[t]; char c = (char)((byte) Integer.parseInt(tmp, 2)); buff = buff+(char)(K^c); //System.out.println("bit = "+buff+" "+teks.length()); tmp = ""; bit = 0; k++; } } return buff; } public static void main(String haripinter[]){ String tekss = "haripinter aja deh... "; String konci = "a"; String h; System.out.println(); String chipe = encrypt(tekss,konci); System.out.println("Enkripsi \""+tekss+"\" dengan kunci \""+konci+"\" = "+chipe); h = getMAC(tekss,S,konci); System.out.println("\nMAC = "+h); System.out.println(); String plain = encrypt(chipe,konci); System.out.println("Dekripsi \""+chipe+"\" dengan kunci \""+konci+"\" = "+plain); h = getMAC(plain,S,konci); System.out.println("\nMAC = "+h); String tet = plain+"z"; String h1 = getMAC(tet,S,konci); if(h1 != h){ System.out.println("Mac ini, "+h1+" = salah"); System.out.println("Teks = "+tet); } //System.out.println("xxx"); } }
Semoga bermanfaat. :)
Top Artikel :
Written by ElangSakti
Java : Enkripsi SMS Menggunakan Message Authentication Code (MAC) Algoritma RC4
Bahasan: Suatu ketika kita tidak ingin pesan rahasia kita (misal SMS) dibaca oleh orang lain. Atau kita tidak ingin pesan kita disadap kemudian dip...
Published at Rabu, 06 Maret 2013, Updated at Rabu, 06 Maret 2013
Reviewed by dr. on
Rating: 4.7
Java : Enkripsi SMS Menggunakan Message Authentication Code (MAC) Algoritma RC4
Bahasan: Suatu ketika kita tidak ingin pesan rahasia kita (misal SMS) dibaca oleh orang lain. Atau kita tidak ingin pesan kita disadap kemudian dip...
Published at Rabu, 06 Maret 2013, Updated at Rabu, 06 Maret 2013
Reviewed by dr. on
Rating: 4.7
Langganan:
Posting Komentar
(
Atom
)
Makasi mas.. membantu project android encryption messaging saya tutorialnya. .
BalasHapusmohon ijin buat share kodingan RC4 nya, saya mau buat tutorial android encryption messaging
http://sleepingtux.blogspot.com
Yup, silahkan. :)
HapusSepertinya pernah buat kayak gini juga yaa... :D
BalasHapusSepertinya pernah ngalami ini deh... :D
BalasHapus