0% found this document useful (0 votes)
1K views

RC4 Example

This document provides an example of a simplified RC4 stream cipher. It uses an 8x3-bit state vector S instead of the full 256 bytes. The key is a 4x3-bit key K=[1 2 3 6]. The plaintext is P=[1 2 2 2]. It initializes S and a temporary vector T, performs an initial permutation on S, then generates a 3-bit stream k by iterating through S to XOR with the plaintext to produce the ciphertext C=[4 1 2 0].

Uploaded by

ViceGod
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1K views

RC4 Example

This document provides an example of a simplified RC4 stream cipher. It uses an 8x3-bit state vector S instead of the full 256 bytes. The key is a 4x3-bit key K=[1 2 3 6]. The plaintext is P=[1 2 2 2]. It initializes S and a temporary vector T, performs an initial permutation on S, then generates a 3-bit stream k by iterating through S to XOR with the plaintext to produce the ciphertext C=[4 1 2 0].

Uploaded by

ViceGod
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

SIIT

CSS 322 Security and Cryptography

Simplified RC4 Example


Example
Steven Gordon

1 Simplified RC4 Example


Lets consider the stream cipher RC4, but instead of the full 256 bytes, we will use 8 x 3-bits. That is, the state vector S is 8 x 3-bits. We will operate on 3-bits of plaintext at a time since S can take the values 0 to 7, which can be represented as 3 bits. Assume we use a 4 x 3-bit key of K = [1 2 3 6]. And a plaintext P = [1 2 2 2] The first step is to generate the stream. Initialise the state vector S and temporary vector T. S is initialised so the S[i] = i, and T is initialised so it is the key K (repeated as necessary). S = [0 1 2 3 4 5 6 7] T = [1 2 3 6 1 2 3 6] Now perform the initial permutation on S.
j = 0; for i = 0 to 7 do j = (j + S[i] + T[i]) mod 8 Swap(S[i],S[j]); end

For i = 0: j

= = Swap(S[0],S[1]); S = [1 0 2 3 4 5 6 7] For i = 1: j=3 Swap(S[1],S[3]) S = [1 3 2 0 4 5 6 7]; 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];
Simplified RC4

(0 + 0 + 1) mod 8 1

6 Dec 2007

SIIT

CSS 322 Security and Cryptography

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[4]) S = [2 3 5 4 0 1 6 7]; For i = 7: j = 2; Swap(S[7],S[2]) S = [2 3 7 4 0 1 6 5]; Hence, our initial permutation of S = [2 3 7 4 0 1 6 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]; }

The first iteration: S = [2 3 7 4 0 1 6 5] i = (0 + 1) mod 8 = 1 j = (0 + S[1]) mod 8 = 3 Swap(S[1],S[3]) S = [2 4 7 3 0 1 6 5] t = (S[1] + S[3]) mod 8 = 7 k = S[7] = 5 Remember, P = [1 2 2 2] So our first 3-bits of ciphertext is obtained by: k XOR P 5 XOR 1 = 101 XOR 001 = 100 = 4 The second iteration: S = [2 4 7 3 0 1 6 5] i = (1 + 1 ) mod 8 = 2 j = (2 + S[2]) mod 8 = 1 Swap(S[2],S[1]) S = [2 7 4 3 0 1 6 5]
Simplified RC4 6 Dec 2007 2

SIIT

CSS 322 Security and Cryptography

t = (S[2] + S[1]) mod 8 = 3 k = S[3] = 3 Second 3-bits of ciphertext are: 3 XOR 2 = 011 XOR 010 = 001 = 1 The third iteration: S = [2 7 4 3 0 1 6 5] i = (2 + 1 ) mod 8 = 3 j = (1 + S[3]) mod 8 = 4 Swap(S[3],S[4]) S = [2 7 4 0 3 1 6 5] t = (S[3] + S[4]) mod 8 = 3 k = S[3] = 0 Third 3-bits of ciphertext are: 0 XOR 2 = 000 XOR 010 = 010 = 2

The final iteration: S = [2 7 4 0 3 1 6 5] i = (1 + 3 ) mod 8 = 4 j = (4 + S[4]) mod 8 = 7 Swap(S[4],S[7]) S = [2 7 4 0 5 1 6 3] t = (S[4] + S[7]) mod 8 = 0 k = S[0] = 2 Last 3-bits of ciphertext are: 2 XOR 2 = 010 XOR 010 = 000 = 0 So to encrypt the plaintext stream P = [1 2 2 2] with key K = [1 2 3 6] using our simplified RC4 stream cipher we get C = [4 1 2 0]. (or in binary: P = 001010010010, K = 001010011110 and C = 100001010000)

Simplified RC4

6 Dec 2007

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy