RC4 adalah penyandian stream cipher yang dibuat oleh Ron Riverst pada tahun 1987 untuk pengamanan RSA. Algoritmanya didasarkan pada permutasi acak.
Kunci dengan panjang variable 1 – 256 bytes digunakan untuk inisialisasi sebuah state. Vector S dengan panjang 256 byte, dengan elemen S[0], S[1],…,S[255]. S terdiri dari permutasi semua bilangan 8 bit dari 0 – 255 untuk enkripsi atau deskripsi, sebuah byte K dibangkitkan dari S dengan memilih 1 dari 255 entri dengan cara sistematis. Setiap kali k dibangkitkan, entri-entri pada S sekali lagi dipermutasikan.
^ inisialisasi S
Entri – entri S di set dari 0 – 255 dengan urutan naik; S[0] = 0, S[1] = 1,….,S[255] = 255. vektor sementara T juga dibuat. Jika panjang kunci dari K =256 byte, lalu K di transper ke T. Jika tidak, untuk setiap kunci dengan panjang keylen byte, elemen keylen pertama T dicopykan dari K. Dan K diulang beberapa kali untuk mengisi T.
/* inisialisasi */
for i = 0 to 255
do S[i] = i;
T[i] = K [i % keylen];
lalu kita menggunakan T untuk menginisialisasi permutasi S. Dimulai dengan S[0] hingga S[255] dan untuk setiap S[i], tukar S[i] dengan byte lainnya pada S berdasarkan skema.
/* inisial permutasi */
j = 0;
for i = 0 to 255
do j = (j + S[i] + T[i] % 256 );
swap ( s[i], S[j] );
karena operasi pada S hanya pertukaran maka hanya terjadi permutasi dengan S tetap semua bilangan antara 0 – 255.
^ Pembangkitan Stream
Setelah S diinisialisasi, key input tidak lagi dipakai. Pembangkitan stream dimulai dengan S[0] – S[255] dan untuk setiap S[i], menukar S[i] dengan byte lainnyadalam S berdasarkan skema berikut. Setelah S[255] dicapai proses berlanjut, dimulai kembali dari S[0].
/* stream generation */
i,j = 0;
While (true)
i = ( i+1 ) % 256;
j = ( j + S[i]) % 256;
swap ( S[i], S[j] );
t = ( S[i], S[j] )% 256;
k= S[t];
untuk enkripsi, XOR nilai K dengan byte selanjutnnya pada plainteks. Untuk dekripsi, XOR nilai K denganbyte selanjutnya pada cipherteks.
Filed under: ALGORITMA RC4 | 6 Comments »