Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 12821|Răspunde: 0

[C] Principiul verificării semnăturii digitale SM2

[Copiază linkul]
Postat pe 26.06.2019 10:09:45 | | |
SM2 este un algoritm de semnătură digitală bazat pe curbe eliptice, iar explicația curbelor eliptice poate fi văzută în anterioara Weibo despre curbele eliptice, iar următoarea este o scurtă introducere în procesul semnăturii SM2.
Pentru ca informația ee să fie semnată, aceasta este informația originală obținută prin funcția de hash după anumite procesări, algoritmul de hashing folosește algoritmul național secret SM3, acest proces este de asemenea sărit, fiind introdus doar procesul de semnare și verificare a cheilor.

1. Procesul de semnare
Fie GG punctul de referință pe curba eliptică, dAdA cheia privată, PAPA cheia publică, PA=dA∗GPA=dA∗G
Rezultatul semnăturii (r,s) (r,s) se obține prin semnarea digitală a EE-ului, iar procesul de calcul este:
În primul rând, alege numărul aleator kk, desigur, alegerea acestui număr este constrânsă și este lăsată neschimbată pentru moment
Calculăm r=e+x1r=e+x1, unde (x1,y1)=k∗G(x1,y1)=k∗G
Calculați s=(1+dA)−1∗(k−r∗dA)s=(1+dA)−1∗(k−r∗dA)
Se poate observa că partea frontală este realizată cu o cheie privată.

2. Procesul de verificare a semnăturii
Verificarea semnăturii înseamnă utilizarea semnăturii obținute, cheia publică, parametrii curbei eliptice etc. pentru a verifica semnătura, iar pașii principali ai verificării sunt:
Mai întâi, se calculează t=r+st=r+s, dacă t=0t=0 înseamnă că nu a trecut.
Apoi, punctele de pe curba (x1,y1) = s∗G+t∗ PA (x1,y1)=s∗G+t∗ PA sunt calculate prin tt și ss
Apoi calculează R=x1+eR=x1+e, apoi verifică dacă RR și RR sunt egale; dacă sunt egale, înseamnă că verificarea a trecut.

3. Principiul verificării
De ce poate fi verificat acest lucru, mai bine îl deducem:
(x1,y1)=s∗G+t∗PA =s∗G+(r+s)∗PA =s∗G+(r+s)∗dA∗G=(1+dA)∗s∗G+r∗dA∗G=(1+dA)∗(1+dA)−1∗(k−r∗dA)∗G+r∗dA∗G=(k−r∗dA)∗G+r∗dA∗G=k∗G(x1,y1)=s∗G+t∗PA =s∗G+(r+s)∗PA =sG+(r+s)PA            =s∗G+(r+s)∗dA∗G=(1+dA)∗s∗G+r∗dA∗G=(1+dA)∗(1+dA)−1∗(k−r∗dA)∗G+r∗dA∗G=(k−r∗dA)∗G+r∗dA∗G=k∗G
Se poate observa că acest punct pe curba eliptică obținut conform cheii publice este consistent cu punctul de la momentul semnării.
Apoi adaugă acest x1x1 și informațiile primite pentru a vedea dacă se potrivește cu semnătura trimisă rr, și trece prin asta.
---------------------
Autor: leowang666
Sursa: CSDN
Original: https://blog.csdn.net/hugewaves/article/details/59205914
Notificare de copyright: Acest articol este un articol original scris de blogger, vă rugăm să atașezați linkul postării de blog pentru reimprimare!





Precedent:【Original】tutorial pentru colectarea transferurilor bancare Google AdSense
Următor:Legături unghiulare de evenimente/atribute @HostListener, @HostBinding
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com