Rc4 Example
Rc4 Example
2 Example 1
Assume we use a 4 x 3-bit key, K, and plaintext P as below:
K = [1 2 3 6]
P = [1 2 2 2]
For i = 2:
j = 0
Swap(S[2],S[0]);
S = [2 3 1 0 4 5 6 7];
For i = 3:
j = 6;
Swap(S[3],S[6])
S = [2 3 1 6 4 5 0 7];
For i = 4:
j = 3
Swap(S[4],S[3])
S = [2 3 1 4 6 5 0 7];
For i = 5:
j = 2
Swap(S[5],S[2]);
S = [2 3 5 4 6 1 0 7];
For i = 6:
j = 5;
Swap(S[6],S[5])
S = [2 3 5 4 6 0 1 7];
For i = 7:
j = 2;
Swap(S[7],S[2])
S = [2 3 7 4 6 0 1 5];
Now we generate 3-bits at a time, k, that we XOR with each 3-bits of plaintext to
produce the ciphertext. The 3-bits k is generated by:
i, j = 0;
while (true) {
i = (i + 1) mod 8;
j = (j + S[i]) mod 8;
Swap (S[i], S[j]);
t = (S[i] + S[j]) mod 8;
k = S[t];
}
Swap(S[2],S[2])
S = [2 4 7 3 6 0 1 5]
t = (S[2] + S[2]) mod 8 = 6
k = S[6] = 1
So to encrypt the plaintext stream P with key K with our simplified RC4 stream we
get C:
P = [1 2 2 2]
K = [5 1 0 1]
C = [4 3 2 3]
Or in binary:
P = 001010010010
K = 101001000001
C = 100011010011