Sunteți pe pagina 1din 9

1.

RC4 Initial Permutation Algorithm


/* Initialization */
for i = 0 to 255 do
S[i] = i
T[i] = K[i mod keylen]
/* Initial Permutation of S */
j = 0
for i = 0 to 255 do
j = (j + S[i] + T[i]) mod 256
swap (S[i], S[j])

Key: ILKOM -> 40 bit; Panjang Kunci: 5


0
I
73

1
L
76

2
K
75

3
O
79

4
M
77

0 i 255

0
I
7
3

1
L
7
6

2
3
K
O
75 7
9

4
5
M I
77 7
3

6
7
L
K
76 7
5

8
O
79

255
I
73

Ditampilkan sample proses eksekusi program sebanyak 13 iterasi


untuk 0 i 12 .
for i = 0
S[0] = 0
T[0] = K[0 mod 5]
j=0
for i = 0
j = (0 + S[0] + T[0]) mod 256
= (0 + 0 + 73) mod 256
= 73
swap (s[0], s[73]) = swap (0,
73)

for i = 2
S[2] = 2
T[2] = K[2 mod 5]
j = 150
for i = 2
j = (150 + S[2] + T[2]) mod 256
= (150 + 2 + 75) mod 256
= 227
swap (s[2], s[227]) = swap (2,
227)

for i = 1
S[1] = 1
T[1] = K[1 mod 5]
j = 73
for i = 1

for i = 3
S[3] = 3
T[3] = K[3 mod 5]
j = 227

j = (73 + S[1] + T[1]) mod 256


= (73 + 1 + 76) mod 256
= 150
swap (s[1], s[150]) = swap (1,
150)
for i = 4
S[4] = 4
T[4] = K[4 mod 5]
j = 53
for i = 4
j = (53 + S[4] + T[4]) mod 256
= (53 + 4 + 77) mod 256
= 134
swap (s[4], s[134]) = swap (4,
134)
for i = 5
S[5] = 5
T[5] = K[5 mod 5]
j = 134
for i = 5
j = (134 + S[5] + T[5]) mod 256
= (134 + 5 + 73) mod 256
= 212
swap (s[5], s[212]) = swap (5,
212)
for i = 6
S[6] = 6
T[6] = K[6 mod 5]
j = 212
for i = 6
j = (212 + S[6] + T[6]) mod 256
= (212 + 6 + 76) mod 256
= 38
swap (s[6], s[38]) = swap (6, 38)
for i = 7
S[7] = 7
T[7] = K[7 mod 5]
j = 38
for i = 7
j = (38 + S[7] + T[7]) mod 256
= (38 + 7 + 75) mod 256
= 120
swap (s[7], s[120]) = swap (7,
120)

for i = 3
j = (227 + S[3] + T[3]) mod 256
= (227 + 3 + 79) mod 256
= 53
swap (s[3], s[53]) = swap (3, 53)
for i = 8
j = (120 + S[8] + T[8]) mod 256
= (120 + 8 + 79) mod 256
= 207
swap (s[8], s[207]) = swap (8,
207)
for i = 9
S[9] = 9
T[9] = K[9 mod 5]
j = 207
for i = 9
j = (207 + S[9] + T[9]) mod 256
= (207 + 9 + 77) mod 256
= 37
swap (s[9], s[37]) = swap (9, 37)
for i = 10
S[10] = 10
T[10] = K[10 mod 5]
j = 37
for i = 10
j = (37 + S[10] + T[10]) mod 256
= (37 + 10 + 73) mod 256
= 120
swap (s[10], s[120]) = swap (10,
7)
for i = 11
S[11] = 11
T[11] = K[11 mod 5]
j = 120
for i = 11
j = (120 + S[11] + T[11]) mod
256
= (120 + 11 + 76) mod 256
= 207
swap (s[11], s[207]) = swap (11,
8)
for i = 12

S[12] = 12
T[12] = K[12 mod 5]
j = 207
for i = 12
j = (207 + S[12] + T[12]) mod
256
= (207 + 12 + 75) mod 256
= 38
swap (s[12], s[38]) = swap (12, 6)

for i = 8
S[8] = 8
T[8] = K[8 mod 5]
j = 120

dan seterusnya sampai


for i = 255

Tabel Array S (dalam desimal) berdasarkan hasil eksekusi


program di atas.

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

0
73
7
8
208
65
103
19
153
111
228
81
82
200
91
217
242
98
69
53
117
160
66
251
229
52
5

1
150
92
93
109
156
249
227
121
34
64
231
96
85
35
97
168
44
233
161
21
164
87
148
219
215
83

2
30
6
14
216
165
175
167
70
84
105
172
118
171
11
170
112
15
4
196
124
139
225
28
61
106
75

3
41
130
113
72
142
63
222
193
246
108
137
74
20
26
22
243
48
220
27
1
89
132
155
179
115
58

4
181
221
152
183
134
119
194
203
169
23
32
138
255
224
100
218
104
12
146
162
176
173
245
99
241
204

5
212
3
250
43
122
247
76
95
240
60
77
230
57
144
114
235
62
0
18
253
201
252
24
46
238
187

6
38
59
80
147
244
123
126
236
29
186
151
188
189
205
47
157
49
17
141
143
13
149
94
182
191

7
120
42
90
101
110
226
209
68
202
102
185
154
36
158
71
9
237
67
184
107
125
248
40
140
78

8
207
55
239
88
79
136
197
33
210
128
177
56
51
45
195
234
192
131
214
116
232
159
198
50
2

9
37
174
31
163
86
145
211
129
10
199
223
254
54
16
25
39
206
178
133
135
190
180
213
166
127

1. Keystream Program
i = j = 0
for each message byte M
i = (i + 1) mod 256
j = (j + S[i]) mod 256
swap(S[i], S[j])
t = (S[i] + S[j]) mod 256
Ci = M XOR S[t]

Iterasi 1
i = j = 0
i = (0 + 1) mod 256
= 1 mod 256
= 1
j = (0 + S[1]) mod 256
= (0 + 150) mod 256
= 150
Swap(S[1], S[150])
t = (S[1] + S[150]) mod 256
= (150 + 242) mod 256
= 392 mod 256
= 136
S[136] = 205
i
1
2
3
4
5

j
151

S[i]
242

Iterasi 2
i = 1; j = 150
i = (1 + 1) mod 256
= 2 mod 256
= 2

S[j]
150

t
136

S[t]
205

j = (150 + S[2]) mod 256


= (150 + 30) mod 256
= 180
Swap(S[2], S[180])
t = (S[2] + S[180]) mod 256
= (30 + 53) mod 256
= 83 mod 256
= 83
S[83] = 246
i
1
2
3
4
5

j
151
180

S[i]
242
53

S[j]
150
30

t
136
83

S[t]
205
246

t
136

S[t]
205

Iterasi 3
i = 2; j = 180
i = (2 + 1) mod 256
= 3 mod 256
= 3
j = (180 + S[3]) mod 256
= (180 + 41) mod 256
= 221
Swap(S[3], S[221])
t = (S[3] + S[221]) mod 256
= (41 + 148) mod 256
= 189 mod 256
= 189
S[189] = 133

i
1

j
151

S[i]
242

S[j]
150

2
3
4
5

180
221

53
148

30
41

83
189

246
133

Iterasi 4
i = 3; j = 221
i = (3 + 1) mod 256
= 4 mod 256
= 4
j = (221 + S[4]) mod 256
= (221 + 181) mod 256
= 402 mod 256
= 146
Swap(S[4], S[146])
t = (S[4] + S[146]) mod 256
= (181 + 47) mod 256
= 228 mod 256
= 228
S[228] = 198
i
1
2
3
4
5

j
151
180
221
146

S[i]
242
53
148
47

Iterasi 5
i = 4; j = 146
i = (4 + 1) mod 256
= 5 mod 256
= 5
j = (146 + S[5]) mod 256
= (146 + 212) mod 256

S[j]
150
30
41
181

t
136
83
189
228

S[t]
205
246
133
198

= 358 mod 256


= 102
Swap(S[5], S[102])
t = (S[5] + S[102]) mod 256
= (212 + 172) mod 256
= 384 mod 256
= 128
S[128] = 51
i
1
2
3
4
5

j
151
180
221
146
102

S[i]
242
53
148
47
172

S[j]
150
30
41
181
212

t
136
83
189
228
128

5 Byte pertama dari key-stream:


205 (DEC) = 110011012 = CD (HEX)
246 (DEC) = 111101102 = F6 (HEX)
133 (DEC) = 100001012 = 85 (HEX)
198 (DEC) = 110001102 = C6 (HEX)
51 (DEC)

= 001100112 = 33 (HEX)

2. Mencari plaintext dari ciphertext: 9E B3 D7 84 66


Pi = Ci XOR S[t]
P1 =
=
=
=
=
P2 =
=
=
=

C1 XOR S[136]
9E XOR CD
1001 1110 XOR 1100 1101
=
0101 0011
83 (DEC/ASCII)
S
C2 XOR S[83]
B3 XOR F6
1011 0011 XOR 1111 0110
=
0100 0101
69 (DEC/ASCII)

S[t]
205
246
133
198
51

=
P3 =
=
=
=
=
P4 =
=
=
=
=
P5 =
=
=
=
=

E
C3 XOR S[189]
D7 XOR 85
1101 0111 XOR 1000 0101
=
0101 0010
82 (DEC/ASCII)
R
C4 XOR S[228]
84 XOR C6
1000 0100 XOR 1100 0110
=
0100 0010
66 (DEC/ASCII)
B
C5 XOR S[128]
66 XOR 33
0110 0110 XOR 0011 0011
=
0101 0101
85 (DEC/ASCII)
U

Jadi, plaintext dari ciphertext 9E B3 D7 84 66 adalah 83 69 82 66 85 =


SERBU

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