Documente Academic
Documente Profesional
Documente Cultură
Exponentierea modular
Algoritmul:
z=1;
for i =s-1 downto 0 do
z= z2 mod n
if ci =1 then z=z*x mod n
Exemplul practic:
6589 8953 mod 2875 = 2344
c = 8953
x = 6589
n = 2875
(8953)10 = (10001011111001)2
i
13
12
11
10
9
8
7
6
5
4
3
2
1
0
ci
1
0
0
0
1
0
1
1
1
1
1
0
0
1
z
z= z2 mod n = 12 mod 2875=1 * 6589 mod 2875 = 839
8392 mod 2875 = 2421
24212 mod 2875 = 1991
19912 mod 2875 = 2331
23312 mod 2875 = 2686 * 6589 mod 2875 = 2429
24292 mod 2875 = 541
5412 mod 2875 = 2306 * 6589 mod 2875 = 2734
27342 mod 2875 = 2631 * 6589 mod 2875 = 2284
22842 mod 2875 = 1406 * 6589 mod 2875 = 884
8842 mod 2875 = 2331 * 6589 mod 2875 = 709
7092 mod 2875 = 2431 * 6589 mod 2875 = 1234
12342 mod 2875 = 1881
18812 mod 2875 = 1911
19112 mod 2875 = 671 * 6589 mod 2875 = 2344
Lucrare individual
Algoritmul lui Euclid
Algoritmul:
n0 = n; b0 = b; t0 = 0; t = 1;
q = n0 / b0 ;
r = n0 q*b0;
while r > 0 do
temp = t0 q*t;
if temp >= 0 then temp = temp mod n
else temp = n ((- temp) mod n)
n0 = b0; b0 = r; t0 = t; t= temp;
q = n0/ b0; r = n0 q*b0;
if b0 != 1 then b nu are invers mod n
else b-1 mod n = t;
b = 1282
n = 578
b nu are invers, b0 != 1 , b0 = 2
1
2
3
4
5
6
7
8
9
n0
578
1282
578
126
74
52
22
8
6
b0
1282
578
126
74
52
22
8
6
2
Calcule matematice:
q
0
2
4
1
1
2
2
1
3
r
578
126
74
52
22
8
6
2
0
t0
0
1
0
1
574
5
569
23
523
t
1
0
1
574
5
569
23
523
78
temp
0
1
574
5
569
23
523
78
1
2
3
4
5
6
7
8
n0
873
568
305
263
42
11
9
2
b0
568
305
263
42
11
9
2
1
Calcule matematice:
q
1
1
1
6
3
1
4
2
r
305
263
42
11
9
2
1
0
t0
0
1
872
2
870
20
810
83
t
1
872
2
870
20
810
83
478
temp
872
2
870
20
810
83
478