import java.io.*;
//import java.lang.Character;
/**
*
* @author zlich
*/
public class RC4 {
public static void main (String [] args) throws IOException {
int [] key = null;
int keylen = 0;
int k = 0;
int [] SBox = new int [256]; DataInputStream input = new DataInputStream(System.in);
//inisialisasi S-Box
for (int i = 0; i 0) {
key = new int [keylen];
}
for (k=0; k<keylen; k++) {
key[k] = kunci.charAt(k);
System.out.print(key[k] + " ");
}
//permutasi S-Box
int i, j = 0;
for (i=0; i<256; i++) {
j = (j + SBox[i] + key[i % key.length]) % 256;
//swap
int temp = SBox[i];
SBox[i] = SBox[j];
SBox[j] = temp;
}
//Input Plaintext
System.out.println("\nPlaintext: ");
String plaintext = input.readLine();
//PRGA
int a = 0;
int b = 0;
for (i=0; i<plaintext.length(); i++) {
a = (a + 1) % 256;
b = (b + SBox[a]) % 256;
//swap
int temp = SBox[a];
SBox[a] = SBox[b];
SBox[b] = temp;
//pseudorandom generation
int pseudo = SBox[(SBox[a] + SBox[b]) % 256];
int chartext = plaintext.charAt(i);
//XOR
int chiper = pseudo ^ chartext;
System.out.print(Integer.toHexString(chiper).toUpperCase()); //chipertext
//System.out.print(Character.toChars(chiper));
}
}
}
Source codenya masih menggunakan prosedural, untuk pendekatan OOP sedang diusahakan.
Kalau dicompile terus dieksekusi outputnya kayak gini:
Selamat Mencoba!!Key:
pwd12
112 119 100 49 50
Plaintext:
Math 310 Proves!
6CA86FE3CBC33C162595C3E78B9C97BC