Sunteți pe pagina 1din 5

Ministerul Educației, Culturii și Cercetării

Academia de Studii Economice din Moldova


Tehnologii Informaționale și Statistică Economică

Metode Criptografice de Protecție a Informației


LUCRARE DE LABORATOR N6
Tema: Semnătura Digitală RSA.

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)

2. Folosind CRC32 de calculat valoare funcției hash a mesajului;


M = Neveadomscaia Diia
Hash16m = 05cca695

În continuare convertim mesajul hexadecimal primit în mesaj decimal cu ajutorul unui


converter online.
Hash10m= 97298069

3. De generat semnătura digitală RSA a mesajului cu ajutorul hash-ului generat.


signM = PowerMod[hash10m, d, n]=
=PowerMod[97298069,9189919320908437823575708672517765110291614286024316
154887486116085858263738251787253553896943995614668080372579441372077976
98321,180708208868740480595165616440590556627810251676940134917012702145
0056662540244048387341127590812303371781887966563182013214880557] =
113795695958237832746729411559113914175529888469571068599266351785258414
8793726005467314221509223434268966068723861149472291651132
SignM=11379569595823783274672941155911391417552988846957106859926635178
52584148793726005467314221509223434268966068723861149472291651132
4. Verific semnătura.
Hash10m1 = 97298069
Hash10m2 = Powermod[singM, e, n] =
Powermod[11379569595823783274672941155911391417552988846957106859926635178525
84148793726005467314221509223434268966068723861149472291651132,1345,18070820886
874048059516561644059055662781025167694013491701270214500566625402440483873411
27590812303371781887966563182013214880557] = 97 298 069
Hash10m2= 97 298 069

Hash10m1 = Hash10m2
În urma calculelor efectuate observăm că Hash10m1 este egal cu Hash10m2, deci calculele
efectuate sunt corecte și eficiente.

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