Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 12821|Respuesta: 0

[C] El principio de la verificación de firma digital SM2

[Copiar enlace]
Publicado en 26/6/2019 10:09:45 | | |
SM2 es un algoritmo de firma digital basado en curvas elípticas, y la explicación de las curvas elípticas puede verse en el anterior Weibo sobre curvas elípticas, y a continuación se presenta una breve introducción al proceso de la firma SM2.
Para que la información ee se firme, esta es la información original obtenida mediante la función hash tras cierto procesamiento; el algoritmo de hash utiliza el algoritmo secreto nacional SM3, este proceso también se omite, solo se introduce el proceso de firma y verificación de claves.

1. El proceso de firma
Sea GG el punto de referencia en la curva elíptica, dAdA la clave privada, PAPA la clave pública, PA=dA∗GPA=dA∗G
El resultado de la firma (r,s) (r,s) se obtiene firmando digitalmente el EE, y el proceso de cálculo es:
En primer lugar, elige el número aleatorio kk, por supuesto, la elección de este número está limitada y se deja así por ahora
Calcula r=e+x1r=e+x1, donde (x1,y1)=k∗G(x1,y1)=k∗G
Calcula s=(1+dA)−1∗(k−r∗dA)s=(1+dA)−1∗(k−r∗dA)
Se puede ver que la parte frontal está realizada con una llave privada.

2. El proceso de verificación de firmas
Verificar la firma consiste en utilizar la firma obtenida, la clave pública, los parámetros de la curva elíptica, etc., para verificar la firma, y los principales pasos de verificación son:
Primero, calcula t=r+st=r+s; si t=0t=0 significa que no ha pasado.
Entonces, los puntos de la curva (x1,y1) = s∗G+t∗ PA (x1,y1)=s∗G+t∗ PA se calculan por tt y ss
Luego calcula R=x1+eR=x1+e, y después verifica si RR y rr son iguales; si son iguales, significa que la verificación ha pasado.

3. El principio de verificación
Por qué esto puede verificarse, bien podríamos derivarlo:
(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            =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 puede observar que este punto en la curva elíptica obtenido según la clave pública es consistente con el punto en el momento de la firma.
Luego añade este x1x1 y la información recibida para ver si coincide con la firma enviada de rr, y pasa.
---------------------
Autor: leowang666
Fuente: CSDN
Original: https://blog.csdn.net/hugewaves/article/details/59205914
Aviso de derechos de autor: Este artículo es un artículo original del bloguero, ¡por favor adjunta el enlace a la entrada del blog para reimprimirlo!





Anterior:【Original】Tutorial de recopilación de transferencias bancarias de Google AdSense
Próximo:Vinculación angular de eventos/atributos @HostListener, @HostBinding
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com