Documente Academic
Documente Profesional
Documente Cultură
Elaborat de:
Studenta gr. TI-201
Învățământ cu frecvență
Neveadomscaia Eudochia
Verificat de:
Conf.Universitar
Zgureanu Aureliu
Chișinău, 2021
Sarcini:
1. De generat setul de chei publică-privată pentru algoritmul RSA (se poate alege aceeași cheie
ca la lucrarea precedentă);
2. Folosind CRC32 de calculat valoare funcției hash a mesajului;
3. De generat semnătura digitală RSA a mesajului cu ajutorul hash-ului generat;
4. De verificat semnătura.
1. De generat setul de chei publică-privată pentru algoritmul RSA (se poate alege
aceeași cheie ca la lucrarea precedentă);
Rezolvare:
a. Alegem 2 numere prime p,q mai mari cu ajutorul RandomPrime[] în wolframalpha
p = 39685999459597454290161126162883786067576449112810064832555157243
q = 45534498646735972188403686897274408864356301263205069600999044599
b. Calculăm n = p*q, z = (p-1)*(q-1).
n = 39685999459597454290161126162883786067576449112810064832555157243 *
45534498646735972188403686897274408864356301263205069600999044599 =
180708208868740480595165616440590556627810251676940134917012702145005666
2540244048387341127590812303371781887966563182013214880557
z = (39685999459597454290161126162883786067576449112810064832555157243
-1)*( 45534498646735972188403686897274408864356301263205069600999044599 -1) =
180708208868740480595165616440590556627810251676940134917012702136483616443391
0621908776314530654108439849137590548047579660678716
c. Alegem e, un număr care să nu fie divizor al lui z, pentru aceasta vom utiliza Wolfram
Alpha cu funcția sa predefinită FactorInteger(z).
e=FactorInteger(18070820886874048059516561644059055662781025167694013491701
27021364836164433910621908776314530654108439849137590548047579660678716)
Putem alege un număr la întâmplare iar în caz dacă nu va merge v-om modifica numărul.
Pentru numărul dat sunt puțini divizori și de aceea vom alege:
e = 1345
d. Aflăm d utilizând funcția Powermod(e, -1, z).
d = Powermod(e, -1, z) = Powermod(1345, -1,
1807082088687404805951656164405905566278102516769401349170127021364836164433
910621908776314530654108439849137590548047579660678716) =
9189919320908437823575708672517765110291614286024316154887486116085858263738
25178725355389694399561466808037257944137207797698321
e. Acum am găsit cheia publică și cheia privată.
Cheia publică – e, n.
Cheia privată – n, d.
Cheia publică
(5,180708208868740480595165616440590556627810251676940134917012702145005666254
0244048387341127590812303371781887966563182013214880557)
Cheia privată:
(18070820886874048059516561644059055662781025167694013491701270214500566625402
44048387341127590812303371781887966563182013214880557,
918991932090843782357570867251776511029161428602431615488748611608585826373825
178725355389694399561466808037257944137207797698321)
Hash10m1 = Hash10m2
În urma calculelor efectuate observăm că Hash10m1 este egal cu Hash10m2, deci calculele
efectuate sunt corecte și eficiente.