Algoritma RC4 menggunakan dua buah Substitution Box (S-Box) yaitu array
sepanjang 256 yang berisi permutasi dari bilangan 0 sampai 255, dan S-Box
kedua, yang berisi permutasi merupakan fungsi dari kunci dengan panjang
variabel.
Cara kerja algoritma RC4 yaitu inisialisasi S-Box pertama, S[0], S[1],
…….., S[255], dengan bilangan 0 sampai 255. Pertama isi secara berurutan
S[0]=0, S[1]=1, …., S[255]=255. Kemudian inisialisasi array lain (S-Box
lain), misal array K dengan panjang 256. Isi array K dengan kunci diulangi
sampai seluruh array K[0], K[1], ……., K[255] terisi seluruhnya. Proses
inisialisasi S-Box (Array S) dapat dilihat pada tabel 1 dibawah ini :
Tabel 1. Proses Inisialisasi S-Box (Array S)
"Proses Inisialisasi S-Box(Array "
"S) "
"for i = 0 to 255 "
"S[i] = i "
" "
Proses inisialisasi S-Box (Array K) dapat dilihat pada tabel 2 berikut:
Tabel 2. Proses Inisialisasi S-Box (Array K)
"Proses Inisialisasi S-Box (Array K) "
"array Kunci // Array dengan panjang kunci "
""length". "
"for i = 0 to 255 "
"K[i] = Kunci [i mod length] "
Kemudian lakukan langkah pengacakan S-Box yang dapat dilihat pada tabel 3
sebagai berikut :
Tabel 3. Proses Pengacakan S-Box
"Proses Pengacakan S-Box "
"i = 0; j = 0; "
"for i = 0 to 255 "
"{ "
"j = (j + S[i] + K[i]) mod 255 "
"Swap S[i] dan S[j] "
"} "
Setelah itu, buat pseudo random byte pada tabel 4 dengan langkah sebagai
berikut:
Tabel 4. Pseudo Random Byte
"Pseudo Random Byte "
"i = (i + 1) mod 255 "
"j = (j + S[i] mod 255 "
"swap S[i] dan S[j] "
"t = (S[i] + S[j] mod 255 "
"K = S[t] "
*Enkripsi RC4
1. Masukkan P = 'HI' (menggunakan 2 byte untuk lebih menyederhanakan)
2. P'Hexa' pada bentuk binary : P'H' = 01001000, P'I' = 01001001
3. Maka P = 2 byte, Setelah jumlah pesan diketahui, maka masuk ke proses
memasukkan kunci.
4. Masukkan K = '17' (menggunakan 2 byte untuk lebih menyederhanakan)
5. Jika K KK maka kembali ke proses 4.
6. Jika K = KK maka proses dapat dilanjutkan.
7. Si menjadi 4 byte, yang memiliki nilai 0 – 3 , yaitu
Si = 0 1 2 3
S0 S1 S2 S3
1. Selanjutnya Ki berukuran 4 byte, yang memiliki pengulangan kunci untuk
memuat seluruh isi array, yaitu :
2. Ki = 1 7 1 7
K0 K1 K2 K3
1. Kemudian terjadi operasi penggabungan yang merupakan iterasi (j + Si +
Ki) mod 4 dan penukaran(swap) nilai Si dan Sj. Pertama inisialisasi I
dan J dengan nilai 0.
2. Iterasi Pertama : (i=0)
for i = ( J+ S[i] + K[i] ) mod 4
( 0 + 0 + 1 ) mod 4
i = 1
Swap S0 dengan S1, kemudian Si menjadi :
Si = 1 0 2 3
S0 S1 S2 S3
1. Iterasi Kedua : (i=1)
for i = ( J + S[i] + K[i] ) mod 4
( 1 + 0 + 7 ) mod 4
i = 0
Swap S1 dengan S0, kemudian Si menjadi :
Si = 0 1 2 3
S0 S1 S2 S3
1. Iterasi Ketiga : (i=2)
for i = ( J + S[i] + K[i] ) mod 4
( 0 + 2 + 1 ) mod 4
i = 3
Swap S2 dengan S3, maka Si menjadi :
Si = 0 1 3 2
S0 S1 S2 S3
1. Iterasi Keempat : (i=3)
for i = ( J + S[i] + K[i] ) mod 4
( 3 + 2 + 7 ) mod 4
i = 0
Swap S3 dengan S0, maka Si menjadi :
Si = 2 1 3 0
S0 S1 S2 S3
1. Langkah selanjutnya, adalah menentukan nilai byte acak untuk enkripsi.
Pertama inisialisasi ulang i dan j menjadi 0, set menjadi ( i + 1 )
mod 4 dan set j menjadi (j + Si ) mod 4. Kemudian lakukan penukaran
(swap) Si dan Sj. Set t menjadi (Si + Sj ) mod 4, maka :
i = ( i + 1 ) mod 4
= ( 0 + 1 ) mod 4
i = 1
Selanjutnya j : (Si bernilai 2 karena pada iterasi keempat Si berada pada
posisi S0)
j = (j+ Si ) mod 4
= ( 0 + 2 ) mod 4
j = 2
Swap S1 dengan S2, maka Si menjadi :
Si = 2 3 1 0
S0 S1 S2 S3
1. Selanjutnya mencari nilai t, yaitu :
t = ( S[i] + S[j] ) mod 4
( 3 + 1 ) mod 4 = 0
KE = S[t] = S0 = 2
Byte dua/KE ini yang akan di-XOR-kan dengan pesan 'H' yaitu :
H = 01001000 (Plaintext)
KE(2) = 00000010
PE =01011011 (ciphertext)
1. Selanjutnya iterasi kedua dari byte kedua kunci, yaitu : i = 1, j = 2
maka :
i = ( i + 1 ) mod 4
i = ( 1 + 1 ) mod 4
i = 2
Selanjutnya mencari nilai j, maka :
j = ( j + S[i] ) mod 4
j = ( 2 + 2 ) mod 4 = 0
Swap S[2] dengan S[0] maka Si menjadi :
Si = 1 3 2 0
S0 S1 S2 S3
1. Selanjutnya mencari nilai t , maka :
t = ( S[i] + S[j] ) mod 4
= ( 2 + 1 ) mod 4 = 3
KE = S[t] = S[3] = 2
1. Byte kedua inilah yang akan di XOR-kan dengan plaintext 'I', maka :
I = 01001001 (Plaintext)
KE(2) = 00000010
PE = 01001011 (Ciphertext)
1. Proses enkripsi RC4 pada pesan 'HI' telah selesai.