Rc4stream Cipher
Rc4stream Cipher
By
Devendra Thawari.
B.Tech CE,Diploma Computer
Engineering
RC4 Stream Cipher Method
I = 0 , j = 0;
I =( i +1 ) mod 256
j =( j + s[ i ] ) mod 256
Swap(s[ i ], s[ j ] )
t=( s[ i ]+s[ j ] )mod 256
Key stream=s[ t ]
repeat the above process till plain text length
Question:
Show the encryption & decryption process with the given
example.
State array, S of length 8 be = [ 7 6 5 4 3 2 1 0 ] Key,
K=[1368]
Plain Text, PT = [ 2 6 5 8 ]
Solution:
Key scheduling :
s[7,6,5,4,3,2,1,0]
k[1,3,6,8] extending the k as s lenght
PT=[2,6,5,8]
Round 1:
j=0; i=0
j=( j + s[ i ] + k[ i ]) mod 8;
=( 0 + s[ 0 ] + k[ 0 ]) mod 8;
=( 0+ 7 + 1) mod 8;
j=0
Swap( s[ i ] , s[ j ] );
=( s[ 0] , s[ 0 ] )
s[7,6,5,4,3,2,1,0]
Round 2: Round 3:
i=1 j=0 i=2 j=1;
j=( j + s[ i ] + k[ i ]) mod 8; j=( j + s[ i ] + k[ i ]) mod 8;
=( 0 + s[ 1 ] + k[ 1 ]) mod 8; =( 1 + s[ 2 ] + k[ 2 ]) mod 8;
=( 0+ 6 + 3) mod 8; =( 1+ 5 + 6) mod 8;
j=1 j=4
Swap( s[ i ] , s[ j ] ); Swap( s[ i ] , s[ j ] );
=( s[ 1] , s[ 1 ] ) =( s[ 2] , s[ 4 ] )
s[7,6,5,4,3,2,1,0] s[7,6,3,4,5,2,1,0]
Round 4: Round 5:
i=3; j=4 i=4; j=0
j=( j + s[ i ] + k[ i ]) mod 8; j=( j + s[ i ] + k[ i ]) mod 8;
=( 4 + s[ 3 ] + k[ 3 ]) mod 8; =( 0 + s[ 4 ] + k[ 4 ]) mod 8;
=( 4+ 4 + 8) mod 8; =( 0+ 5 + 1) mod 8;
j=0 j=6
Swap( s[ i ] , s[ j ] ); Swap( s[ i ] , s[ j ] );
=( s[ 3] , s[ 0 ] ) =( s[ 4] , s[ 6 ] )
s[4,6,3,7,5,2,1,0] s[4,6,3,7,1,2,5,0]
Round 6: Round 7:
i=5; j=6 i=6; j=3
j=( j + s[ i ] + k[ i ]) mod 8; j=( j + s[ i ] + k[ i ]) mod 8;
=( 6 + s[ 5 ] + k[ 5 ]) mod 8; =( 3+ s[ 6 ] + k[ 6 ]) mod 8;
=( 6+ 2 + 3) mod 8; =( 3+ 5+ 6) mod 8;
j=1 j=6
Swap( s[ i ] , s[ j ] ); Swap( s[ i ] , s[ j ] );
=( s[ 5] , s[ 3 ] ) =( s[ 6] , s[ 6 ] )
s[4,6,3,2,1,7,5,0] s[4,6,3,2,1,7,5,0]
Round 8:
i=7; j=6
j=( j + s[ i ] + k[ i ]) mod 8;
=( 6 + s[ 7 ] + k[ 7 ]) mod 8;
=( 6+ 40+ 8) mod 8;
j=6
Swap( s[ i ] , s[ j ] );
=( s[ 7] , s[ 6 ] )
s[4,6,3,2,1,7,0,5]
Key stream Generator
Iteration 1: Iteration 2:
i = 0 , j = 0; i = 1 , j = 6;
i=( i +1 ) mod 8 i =( i +1 ) mod 8
=( 0 +1 ) mod 8=1 =( 1 +1 ) mod 8=2
j =( j + s[ i ] ) mod 8 j =( j + s[ i ] ) mod 8
=( 0+ s[ 1] ) mod 8 =( 6+ s[ 2] ) mod 8
=( 0 + 6) mod 8 =6 =( 6 + 3) mod 8 =1
Swap(s[ i ], s[ j ] ) Swap(s[ i ], s[ j ] )
Swap(s[ 1], s[ 6 ] ) Swap(s[ 2], s[ 1 ] )
S=[4, 0 ,3,2,1,7,6,5]
S=[4, 3 ,0,2,1,7,6,5]
t=( s[ i ]+s[ j ] )mod 8
=( s[ 1]+s[ 6 ] )mod 8 t=( s[ i ]+s[ j ] )mod 8
=( 0+6)mod 8=6 =( s[ 2]+s[ 1 ] )mod 8
=( 0+3 )mod 8=3
Key stream=s[ t ]=s[6]=6
Key stream=s[ t ]=s[3]=2
Iteration 3: Iteration 4:
i= 2 , j = 1; i= 3 , j = 3;
i =( i +1 ) mod 8 i =( i +1 ) mod 8
=( 2 +1 ) mod 8=3 =( 3+1 ) mod 8=4
j =( j + s[ i ] ) mod 8 j =( j + s[ i ] ) mod 8
=( 1+ s[ 3] ) mod 8 =( 3+ s[ 4] ) mod 8
=( 1 + 2) mod 8 =3 =( 3 + 1) mod 8 =4
Swap(s[ i ], s[ j ] ) Swap(s[ i ], s[ j ] )
Swap(s[ 3], s[ 3 ] ) Swap(s[ 4], s[ 4 ] )
Encryption: Decryption: