Sunteți pe pagina 1din 4

Lucrare individual

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;

Exemplul practic nr. 1:


1282-1 mod 578 = nu are invers

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. n0 = 578; b0 = 1282; t0 = 0; t = 1; q = 578 / 1282 = 0; r = n0 q*b0 = 578; temp = t0 q*t = 0 - 0*1 = 0;


temp = temp mod n = 0 mod 578=0;
2. n0 = 1282; b0 = 578; t0 = 1; t= 0; q = 1282/ 578 = 2; r = 1282 2*578 = 126; temp = 1- 2*0 = 1;
temp = 1 mod 578 = 1;
3. n0 = 578; b0 = 126; t0 = 0; t= 1; q = 578/ 126= 4; r = 578 4*126 = 74; temp = 0 4*1 = - 4 ;
temp = n ((- temp) mod n) = 578 ((-(-4)) mod 578)= 578 (4 mod 578 )= 574;
4. n0 = 126; b0 = 74; t0 = 1; t= 574; q = 126/ 74 = 1; r = 126 1*74 = 52; temp = 1 1*574 = - 573;
temp= 578 ((-(-573)) mod 578) = 578 ( 573 mod 578) = 5;
5. n0 = 74; b0 = 52; t0 = 574; t= 5; q = 74/ 52 = 1; r = 74 1*52 = 22; temp = 574 1*5 = 569;
temp = 569 mod 578 = 569;
6. n0 = 52; b0 = 22; t0 = 5; t= 569; q = 52/ 22 = 2; r = 52 2*22 = 8; temp = 5 2*569 = - 1133;
temp= 578 ((-(- 1133)) mod 578) = 578 (1133 mod 578) = 23;
7. n0 = 22; b0 = 8; t0 = 569; t= 23; q = 22/ 8 = 2; r = 22 2*8 = 6; temp = 569 2*23 = 523;
temp = 523 mod 578 = 523;
8. n0 = 8; b0 = 6; t0 = 23; t= 523; q = 8/ 6 = 1; r = 8 1*6 = 2; temp = 23 1*523 = -500;
temp = 578 ((-(-500) )mod 578) = 578 (500 mod 578) = 578 500 = 78;
9. n0 =6; b0 = 2; t0 = 523; t= 78; q = 6/ 2 = 3; r = 6 3*2 = 0;
Rspuns: b nu are invers, b0 != 1 , b0 = 2
Exemplul practic nr. 2:
568-1 mod 873 = 478
b = 568
n = 873

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

1. n0 = 873; b0 = 568; t0 = 0; t = 1; q = 873/ 568 = 1;

r = 873 1*568 = 305; temp = 0 1*1 = - 1;

temp = 873 ((-(- 1)) mod 873) = 873 1 = 872;


2. n0 = 568; b0 = 305; t0 = 1; t= 872; q = 568/ 305 = 1; r = 568 1*305 = 263; temp = 1 1*872 = - 871;
temp = 873 ((-(- 871)) mod 873) = 873 (871 mod 873) = 2;
3. n0 = 305; b0 = 263; t0 = 872; t= 2; q = 305/ 263 = 1; r = 305 1*263 = 42; temp = 872 1*2 = 870;
4. n0 = 263; b0 = 42; t0 = 2; t= 870; q = 263/ 42 = 6; r = 263 6*42 = 11; temp = 2 6*870 = - 5218;
temp = 873 ((-(-5218)) mod 873) = 873 (5218 mod 873) = 20;
5. n0 = 42; b0 = 11; t0 = 870; t= 20; q = 42/ 11 = 3; r = 42 3*11 = 9; temp = 870 3*20 = 810;
6. n0 = 11; b0 = 9; t0 = 20; t= 810; q = 11/ 9 = 1; r = 11 1*9 = 2; temp = 20 1*810 = - 790;
temp = 873 ((-(-790)) mod 873) = 873 (790 mod 873) = 83;
7. n0 = 9; b0 = 2; t0 = 810; t=83; q = 9/ 2 = 4; r = 9 4*2 = 1; temp = 810 4*83 = 478;
8. n0 = 2; b0 = 1; t0 = 83; t=478; q = 2/1 = 2; r = 2 2*1 = 0;
Rspuns: b-1 mod n = t ; 568-1 mod 873 = 478

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