Sunteți pe pagina 1din 9

Lucrare individuală Cifrul RC5

Fig.1 Schema RC5

RC5 – w/r/b

RC5 – 32/1/16

w = 32 – jumătate din lungimea blocului de biţi

r = 1 – numărul de runde

b = 16 – lungimea cheii în biţi

Calculăm:

u = w/8 => u = 32/8 = 4 – numărul de biţi într-un cuvînt

c = b/u => c = 16/4 = 4 – numărul de cuvinte

t = 2(r+1) => t = 2(1+1) = 4 - lungimea tabelului

Considerăm cheia Key = 6 => în ASCII este 36.

Copiem K[0..b-1] în L[0..c-1]

Iniţial avem: key = 0000.0000.0000.0036

L[0] = 0000.0000

L[1] = 0000.0000

L[2] = 0000.0000

L[3] = 0000.0000
Completăm L[0..c-1] astfel:

for i = b-1 downto 0 do

L[i/u] = (L[i/u] <<< 8)+K[i]

i = 15 L[15/4] = L[3] = (L[3]<<<8) + K[15] = 0000.0000+ K[15] = 0000.0000 + 6 = 0000.0006

i = 14 L[14/4] = L[3] = (L[3]<<<8) + K[14] = 0000.0600+ K[14] = 0000.6000 + 3 = 0000.0603

i = 13 L[13/4] = L[3] = (L[3]<<<8) + K[13] = 0006.0300 + K[13] = 0006.0300 + 0 = 0006.0300

i = 12 L[12/4] = L[3] = (L[3]<<<8) + K[12] = 0603.0000 + K[12] = 0603.0000 + 0 = 0603.0000

i = 11 L[11/4] = L[2] = (L[2]<<<8) + K[11] = 0000.0000 + K[11] = 0000.0000 + 0 = 0000.0000

i = 10 L[10/4] = L[2] = (L[2]<<<8) + K[10] = 0000.0000 + K[10] = 0000.0000 + 0 = 0000.0000

i=9 L[9/4] = L[2] = (L[2]<<<8) + K[9] = 0000.0000 + K[9] = 0000.0000 + 0 = 0000.0000

i=8 L[8/4] = L[2] = (L[2]<<<8) + K[8] = 0000.0000 + K[8] = 0000.0000 + 0 = 0000.0000

i=7 L[7/4] = L[1] = (L[1]<<<8) + K[7] = 0000.0000 + K[7] = 0000.0000 + 0 = 0000.0000

i=6 L[6/4] = L[1] = (L[1]<<<8) + K[6] = 0000.0000 + K[6] = 0000.0000 + 0 = 0000.0000

i=5 L[5/4] = L[1] = (L[1]<<<8) + K[5] = 0000.0000 + K[5] = 0000.0000 + 0 = 0000.0000

i=4 L[4/4] = L[1] = (L[1]<<<8) + K[4] = 0000.0000 + K[4] = 0000.0000 + 0 = 0000.0000

i=3 L[3/4] = L[0] = (L[0]<<<8) + K[3] = 0000.0000 + K[3] = 0000.0000 + 0 = 0000.0000

i=2 L[2/4] = L[0] = (L[0]<<<8) + K[2] = 0000.0000 + K[2] = 0000.0000 + 0 = 0000.0000

i=1 L[1/4] = L[0] = (L[0]<<<8) + K[1] = 0000.0000 + K[1] = 0000.0000 + 0 = 0000.0000

i=0 L[0/4] = L[0] = (L[0]<<<8) + K[0] = 0000.0000 + K[0] = 0000.0000 + 0 = 0000.0000

Am obţinut:

L[0] = 0000.0000

L[1] = 0000.0000

L[2] = 0000.0000

L[3] = 0603.0000
Completăm S[0..t-1] astfel:

S[0] = Pw

P32 = b7e15163 = (1011.0111.1110.0001.0101.0001.0110.0011)2

Q32 = 9e3779b9 = (1001.1110.0011.0111.0111.1001.1011.1001)2

for i = 1 to t-1 do

S[i] = S[i-1] + Q32

i=1

S[1] = S[0] + Q32 = b7e15163 + 9e3779b9 = 5618cb1c = (1011.0111.1110.0001.0101.0001.0110.0011)2

i=2

S[2] = S[1] + Q32 = 5618cb1c + 9e3779b9 = f45044d5 = (1111.0100.0101.0000.0100.0100.1101.0101)2

i=3

S[3] = S[2] + Q32 = f45044d5 + 9e3779b9 = 9287be8e = (1001.0010.1000.0111.1011.1110.1000.1110)2

Initializam:

i=0
j=0
A=0
B=0

Parcurgem ciclul:

do 3*max(t, c) times => do 12 times

A = S[i] = (S[i] + A + B) <<< 3;

B = L[j] = (L[j] + A + B) <<< (A + B);

i = (i + 1) mod (t)

j = (j + 1) mod (c)
=1=

A = S[0] = (S[0] + A + B) <<< 3 = b7e15163 <<< 3 = (1011.0111.1110.0001.0101.0001.0110.0011)2 <<< 3


= (1011.1111.0000.1010.1000.1011.0001.1101)2 = bf0a8b1d

B = L[0] = (L[0] + A + B) <<< (A + B) = bf0a8b1d <<< bf0a8b1d =


(1011.1111.0000.1010.1000.1011.0001.1101)2 <<< (3205139229 mod 32)10 =
(1011.1111.0000.1010.1000.1011.0001.1101)2 <<< 29 = (1011.0111.1110.0001.0101.0001.0110.0011)2 =
b7e15163

i = 1 mod 4 = 1

j = 1 mod 4 = 1

=2=

A = S[1] = (S[1] + A + B) <<< 3 = 5618cb1c + bf0a8b1d + b7e15163 <<< 3 = cd04a79c <<< 3 =


(1100.1101.0000.0100.1010.0111.1001.1100)2 <<<3 = (0110.1000.0010.0101.0011.1100.1110.0110)2 =
68253ce6

B = L[1] = (L[1] + A + B) <<< (A + B) = 68253ce6 + b7e15163 <<< (68253ce6 + b7e15163) = 20068e49


<<< (537300553 mod 32)10 = (0010.0000.0000.0110.1000.1110.0100.1001)2 <<< 9 =
(0000.1101.0001.1100.1001.0010.0100.0000)2 = 0d1c9240

i = 2 mod 4 = 2

j = 2 mod 4 = 2

=3=

A = S[2] = (S[2] + A + B) <<< 3 = f45044d5 + 68253ce6 + 0d1c9240 <<< 3 = 699213fb <<< 3 =


(0110.1001.1001.0010.0001.0011.1111.1011)2 <<< 3 = (0100.1100.1001.0000.1001.1111.1101.1011)2 =
4c909fdb

B = L[2] = (L[2] + A + B) <<< (A + B) = 4c909fdb + 0d1c9240 <<< (4c909fdb + 0d1c9240) = 59ad321b


<<< (1504522779 mod 32)10 = (0101.1001.1010.1101.0011.0010.0001.1011)2 <<< 27 =
(1101.1010.1100.1101.0110.1001.1001.0000 )2 = dacd6990

i = 3 mod 4 = 3

j = 3 mod 4 = 3
= 4=

A = S[3] = (S[3] + A + B) <<< 3 = 9287be8e + 4c909fdb + dacd6990 <<< 3 = b9e5c7f9 <<< 3 =


(1011.1001.1110.0101.1100.0111.1111.1001)2 <<< 3 = (1100.1111.0010.1110.0011.1111.1100.1101)2 =
cf2e3fcd

B = L[3] = (L[3] + A + B) <<< (A + B) = 06030000 + cf2e3fcd + dacd6990 <<< (cf2e3fcd + dacd6990) =


affea95d <<< (2851842397 mod 32)10 = (1010.1111.1111.1110.1010.1001.0101.1101)2 <<< 29 =

(1011.0101.1111.1111.1101.0101.0010.1011)2 = B5FFD52B

i = 4 mod 4 = 0

j = 4 mod 4 = 0

= 5=

A = S[0] = (S[0] + A + B) <<< 3 = bf0a8b1d + cf2e3fcd + B5FFD52B <<< 3 = 4438 A015 <<< 3 =
(0100.0100.0011.1000.1010.0000.0001.0101)2 <<< 3 = (0010.0001.1100.0101.0000.0000.1010.1010)2 =
21C500AA

B = L[0] = (L[0] + A + B) <<< (A + B) = b7e15163 + 21C500AA + B5FFD52B <<< (21C500AA +


B5FFD52B) = 8FA6 2738 <<< (3620001237 mod 32)10= (1000.1111.1010.0110.0010.0111.0011.1000)2
<<< 21= (1110.0111.0001.0001.1111.0100.1100.0100)2 = E711F4C4

i = 1 mod 4 = 1

j = 1 mod 4 = 1

= 6=

A = S[1] = (S[1] + A + B) <<< 3 = 68253ce6 + 21C500AA + E711F4C4 <<< 3 = 70FC 3254 <<< 3=
0111.0000.1111.1100.0011.0010.0101.0100 <<<3= 1000.0111.1110.0001.1001.0010.1010.0011

= 87E192A3

B = L[1] = (L[1] + A + B) <<< (A + B) = 0d1c9240 + 87E192A3 + E711F4C4 <<< (87E192A3 +


E711F4C4) = 7C10 19A7 <<< (1861453671 mod 32)10 = (0111.1100.0001.0000.0001.1001.1010.0111)2 <<<
7 = (0000.1000.0000.1100.1101.0011.1011.1110)2 = 80CD3BE

i = 2 mod 4 = 2

j = 2 mod 4 = 2
= 7=

A = S[2] = (S[2] + A + B) <<< 3 = (4c909fdb + 87E192A3 + 80CD3BE) <<< 3 = DC7F063C <<< 3 =


(1101.1100.0111.1111.0000.0110.0011.1100)2 <<< 3 = (1110.0011.1111.1000.0011.0001.1110.0110)2

= E3F831E6

B = L[2] = (L[2] + A + B) <<< (A + B) = dacd6990 + E3F831E6 + 80CD3BE <<< ( E3F831E6 +


80CD3BE) = C6D2 6F34 <<< (135058366 mod 32)10 = (1100.0110.1101.0010.0110.1111.0011.0100)2
<<<30 = (0011.0001.1011.0100.1001.1011.1100.1101)2 = 31B49BCD

i = 3 mod 4 = 3

j = 3 mod 4 = 3

= 8=

A = S[3] = (S[3] + A + B) <<< 3 = (cf2e3fcd + E3F831E6 + 31B49BCD) <<<3 = E4DB 0D80 <<<3 =
(1110.0100.1101.1011.0000.1101.1000.0000)2 <<< 3 = (0010.0110.1101.1000.0110.1100.0000.0111)2

= 26D86C07

B = L[3] = (L[3] + A + B) <<< (A + B) = (B5FFD52B + 26D86C07 + 31B49BCD) <<< (26D86C07 +


31B49BCD) = 0E8C DCFF <<< (1485637588 mod 32)10 =( 1110.1000.1100.1101.1100.1111.1111)2 <<< 20
= (1111.1111.1110.1000.1100.1101.1100)2 = FFE8CDC

i = 4 mod 4 = 0

j = 4 mod 4 = 0

= 9=

A = S[0] = (S[0] + A + B) <<< 3 = (21C500AA + 26D86C07 + FFE8CDC) <<< 3 = 589B F98D <<< 3 =
(0101.1000.1001.1011.1111.1001.1000.1101)2 <<<3 = (c)2

= C4DFCC6A

B = L[0] = (L[0] + A + B) <<< (A + B) = (E711F4C4 + C4DFCC6A + FFE8CDC) <<< (C4DFCC6A +


FFE8CDC) = BBF0 4E0A <<< (3571341638 mod 32)10 = (1011.1011.1111.0000.0100.1110.0000.1010)2
<<< 6 = (1111.1100.0001.0011.1000.0010.1010.1110)2= FC1382AE

i = 1 mod 4 = 1

j = 1 mod 4 = 1
= 10=

A = S[1] = (S[1] + A + B) <<< 3 = (87E192A3 + C4DFCC6A + FC1382AE) <<<3 = 48D4 E1B <<<3 =
(0100.1000.1101.0100.1110.0001.1011)2 <<<3 = (0100.0110.1010.0111.0000.1101.1010)2 = 46A70DA

B = L[1] = (L[1] + A + B) <<< (A + B) = (80CD3BE + 46A70DA + FC1382AE) <<< (46A70DA +


FC1382AE) = 088A C746 <<< (8254344 mod 32)10 = (1000.1000.1010.1100.0111.0100.0110)2 <<< 8=
(1010.1100.0111.0100.0110. 1000.1000)2 = AC74688

i = 2 mod 4 = 2

j = 2 mod 4 = 2

= 11=

A = S[2] = (S[2] + A + B) <<< 3 = (E3F831E6+ 46A70DA + AC74688) <<< 3 = F329E948<<<3 =


(1111.0011.0010.1001.1110.1001.0100.1000)2 <<< 3 = (1001.1001.0100.1111.0100.1010.0100.0111)2 =
994F4A47

B = L[2] = (L[2] + A + B) <<< (A + B) = (31B49BCD+ 994F4A47 + AC74688) <<< (994F4A47 +


AC74688) = D5CB2C9C <<< (180831880 mod 32)10 =( 1101.0101.1100.1011.0010.1100.1001.1100)2 <<<
8 = (1100.1011.0010.1100.1001.1100. 1101.0101)2 = CB2C9CD5

i = 3 mod 4 = 3

j = 3 mod 4 = 3

= 12=

A = S[3] = (S[3] + A + B) <<< 3 = (26D86C07 + 994F4A47 + CB2C9CD5) <<< 3 =


(1000.1011.0101.0100.0101.0011.0010.0011)2 <<< 3 = (0101.1010.1010.0010.1001.1001.0001.1100)2 =
5AA2991C

B = L[3] = (L[3] + A + B) <<< (A + B) = (FFE8CDC + 5AA2991C+ CB2C9CD5) <<< (5AA2991C +


CB2C9CD5) = 35CD C2CD <<<(634336753 mod 32)10= 0011.0101.1100.1101.1100.0010.1100.1101<<<
17= (1000.0101.1001.1010.0110.1011.1001.1011)2 = 859A6B9B

i = 4 mod 4 = 0

j = 4 mod 4 = 0
Criptarea:
Textul pentru criptare: sysadmin <=> în ASCII: 73 79 73 61 64 6D 69 6E

A = 73797361

B = 646D696E

S[0]= C4DFCC6A

S[1]= 46A70DA

S[2]= 994F4A47

S[3]= 5AA2991C

A=A+S[0];

B=B+S[1];

A = 73797361 + C4DFCC6A = 38593FCB

B = 646D696E + 46A70DA = 68D7DA48

for i=1 to r do

A = ((A XOR B) <<< B) + S[2*i];

B = ((B XOR A) <<< A) + S[2*i+1];

for i=1 to 1 do

A = ((38593FCB XOR 68D7DA48) <<< 68D7DA48) + 994F4A47 = 508EE583 <<< (1758976584 mod 32)
+ 994F4A47 = 508EE583 <<< 8 + 994F4A47 = (0101.0000.1000.1110.1110.0101.1000.0011)2 <<< 8 +
994F4A47 = (1000.1110.1110.0101.1000.0011. 0101.0000)2 + 994F4A47 = 8EE58350 + 994F4A47 =
2834CD97

B = (( 68D7DA48 XOR 2834CD97) <<< 2834CD97) + 5AA2991C = 40E317DF <<< (674549143 mod 32)
+ 5AA2991C = 40E317DF <<< 23 + 5AA2991C = (0100.0000.1110.0011.0001.0111.1101.1111)2 <<< 23 +
5AA2991C = (1110.1111.1010.0000.0111.0001.1000.1011)2 + 5AA2991C = EFA0718B+ 5AA2991C =
4A430AA7

A= 2834CD97

B= 4A430AA7
Decriptarea:

A = 2834CD97

B = 4A430AA7

S[0]= C4DFCC6A

S[1]= 46A70DA

S[2]= c

S[3]= 5AA2991C

for i = r downto 1 do

B = ((B - S[2*i+1]) >>> A) XOR A

A = ((A - S[2*i]) >>> B) XOR B

B = ((4A430AA7- 5AA2991C) >>> 2834CD97) XOR 2834CD97= (EFA0718B >>> 23) XOR 2834CD97=
((1110.1111.1010.0000.0111.0001.1000.1011)2 >>> 23 ) XOR 2834CD97=

(0100.0000.1110.0011.0001.0111.1101.1111)2 XOR 2834CD97= 40E317DF XOR 2834CD97= 68D7DA48

B = B - S[1] = 68D7DA48 - 46A70DA = 646D696E

A = ((2834CD97- 994F4A47) >>> 68D7DA48) XOR 68D7DA48 = 8EE5 8350>>> 8 XOR 68D7DA48 =
(1000.1110.1110.0101.1000.0011. 0101.0000)2 >>> 8 XOR 68D7DA48 =

(0101.0000.1000.1110.1110.0101.1000.0011)2 XOR 68D7DA48 = 508EE583 XOR 68D7DA48

= 38593FCB

A = A - S[0] = 38593FCB - C4DFCC6A = 73797361

A= 646D696E

B = 73797361

S-ar putea să vă placă și