Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 3

Criptosisteme simetrice fluide: RC4

n=3
23 =8 – flux de biţi
Formăm vectrul S: 01234567
Alegem cheia: 16, K – vectorul cheii
Codul ASCII al cheii este: 1 → 49; 6 → 54;
Vectorul cheii este:
49 55 49 55 49 55 49 55

Depunem valorile codului ASCII al cheii:


P 0 1 2 3 4 5 6 7
S 0 1 2 3 4 5 6 7
K 49 55 49 55 49 55 49 55

Efectuăm permutări asupra biţilor vectorului S:

Iniţial i=0, j=0.


j=(j+K[i]+S[j]) mod 8

1) i=0, j=(0+K[0]+S[0]) mod 8 = (0+49+0) mod 8 = 49 mod 8 = 1;


SWAP(S[i],S[j])=SWAP(S[0],S[1])=10234567=55 49 49 55 49 55 49 55
S 1 0 2 3 4 5 6 7
K 55 49 49 55 49 55 49 55

2) i=1, j=(1+K[1]+S[1]) mod 8 = (1+49+0) mod 8 = 50 mod 8 = 2;


SWAP(S[i],S[j])=SWAP(S[1],S[2])=12034567=55 49 49 55 49 55 49 55
S 1 2 0 3 4 5 6 7
K 55 49 49 55 49 55 49 55

3) i=2, j=(2+K[2]+S[2]) mod 8 = (2+49+0) mod 8 = 51 mod 8 = 3;


SWAP(S[i],S[j])=SWAP(S[2],S[3])=12304567=55 49 55 49 49 55 49 55
S 1 2 3 0 4 5 6 7
K 55 49 55 49 49 55 49 55

4) i=3, j=(3+K[3]+S[3]) mod 8 = (3+49+0) mod 8 = 52 mod 8 = 4;


SWAP(S[i],S[j])=SWAP(S[3],S[4])=12340567=55 49 55 49 49 55 49 55
S 1 2 3 4 0 5 6 7
K 55 49 55 49 49 55 49 55

5) i=4, j=(4+K[4]+S[4]) mod 8 = (4+49+0) mod 8 = 53 mod 8 = 5;


SWAP(S[i],S[j])=SWAP(S[4],S[5])=12345067=55 49 55 49 55 49 49 55
S 1 2 3 4 5 0 6 7
K 55 49 55 49 55 49 49 55

6) i=5, j=(5+K[5]+S[5]) mod 8 = (5+49+0) mod 8 = 54 mod 8 = 6;

1
SWAP(S[i],S[j])=SWAP(S[5],S[6])=12345607=55 49 55 49 55 49 49 55
S 1 2 3 4 5 6 0 7
K 55 49 55 49 55 49 49 55

7) i=6, j=(6+K[6]+S[6]) mod 8 = (6+49+0) mod 8 = 55 mod 8 = 7;


SWAP(S[i],S[j])=SWAP(S[6],S[7])=12345670=55 49 55 49 55 49 55 49
S 1 2 3 4 5 6 7 0
K 55 49 55 49 55 49 55 49

7) i=7, j=(7+K[7]+S[7]) mod 8 = (7+49+0) mod 8 = 56 mod 8 = 0;


SWAP(S[i],S[j])=SWAP(S[7],S[0])= 02345671= 49 49 55 49 55 49 55 55
P 0 1 2 3 4 5 6 7
S 0 2 3 4 5 6 7 1
K 49 49 55 49 55 49 55 55

CRIPTARE

Alegem un mesaj pentru criptare m = Procesor


Iniţial i=0, j=0.
i=(i+1) mod 8 = 1 mod 8 = 1.
j=(j+S[i]) mod 8 = (j+S[1]) mod 8 = (0+2) mod 8 = 2

Calculam t:
t=(S[i]+S[j]) mod 8 = (S[1]+S[2]) mod 8 = (2+3) mod 8 = 5

Criptul r = chr(ord(m)) XOR K[t]

, K[t] = K[5] = (49)2 = (00110001)2


m[0] = P → (80)10 = (01010000)2
m[1] = r → (114)10 = (01110010)2
m[2] = o → (111)10 = (01101111)2
m[3] = c → (99)10 = (01100011)2
m[4] = e → (101)10 = (01100101)2
m[5] = s → (115)10 = (01110011)2
m[6] = o → (111)10 = (01101111)2
m[7] = r → (114)10 = (01110010)2

1) r[0] = 01010000 XOR 00110001 = (1100001)2 = (97)10 → a


2) r[1] = 01110010 XOR 110001 = (1000011)2 = (67)10 → C
3) r[2] = 01101111XOR 110001 = (1011110)2 = (94)10 → ^
4) r[3] = 01100011 XOR 110001 = (1010010)2 = (82)10 → R
5) r[4] = 01100101 XOR 110001 = (1010100)2 = (84)10 → T
6) r[5] = 01110011 XOR 110001 = (1000010)2 = (66)10 → B
7) r[6] = 01101111 XOR 110001 = (1011110)2 = (94)10 → ^
8) r[7] = 01110010 XOR 110001 = (1000011)2 = (67)10 → C

Deci, mesajul m = „Procesor” criptat este „aC^RTB^C”


DECRIPTARE Cript r = aC^RTB^C;
K=17;

2
S= 02345671
S 0 2 3 4 5 6 7 1
K 49 49 55 49 55 49 55 55

Iniţial i=0, j=0.


i = (i+1) mod 8 = 1 mod 8 = 1.
j = (j+S[i]) mod 8 = (j+S[1]) mod 8 = (0+2) mod 8 = 2
SWAP(S[i],S[j]) mod 8 = (3+2) mod 8 = 5

i = chr(ord(r)) XOR K[t]


r[0] = a → (97)10 = (1100001)2
r[1] = C → (67)10 = (11000011)2
r[2] = ^ → (94)10 = (1011110)2
r[3] = R → (82)10 = (1010010)2
r[4] = T → (84)10 = (1010100)2
r[5] = B→ (66)10 = (1000010)2
r[6] = ^ → (94)10 = (1011110)2
r[7] = C → (67)10 = (1000011)2

1) m[0] = 1100001 XOR 00110001 = (1010000)2 = (80)10 → P


2) m[1] = 11000011 XOR 110001 = (01110010)2 = (114)10 → r
3) m[2] = 1011110 XOR 110001 = (01101111)2 = (111)10 → o
4) m[3] = 1010010 XOR 110001 = (01100011)2 = (99)10 → c
5) m[4] = 1010100 XOR 110001 = (01100101)2 = (101)10 → e
6) m[5] = 1000010XOR 110001 = (01110011)2 = (115)10 → s
7) m[6] = 1011110 XOR 110001 = (01101111)2 = (111)10 → o
8) m[7] = 1000011XOR 110001 = (01110010)2 = (114)10 → r

Mesajul criptat r = „aC^RTB^C” decriptat va fi: „Procesor”.

You might also like