Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 12821|Resposta: 0

[C] O princípio da verificação de assinatura digital SM2

[Copiar link]
Publicado em 26/06/2019 10:09:45 | | |
SM2 é um algoritmo de assinatura digital baseado em curvas elípticas, e a explicação das curvas elípticas pode ser vista no Weibo anterior sobre curvas elípticas, e a seguir está uma breve introdução ao processo da assinatura SM2.
Para a informação ee a ser assinada, esta é a informação original obtida pela função hash após certo processamento; o algoritmo de hash usa o algoritmo secreto nacional SM3, esse processo também é pulado, sendo introduzido apenas o processo de assinatura e verificação de chaves.

1. O processo de assinatura
Seja GG o ponto de referência na curva elíptica, dAdA é a chave privada, PAPA é a chave pública, PA=dA∗GPA=dA∗G
O resultado da assinatura (r,s) (r,s) é obtido assinando digitalmente o EE, e o processo de cálculo é:
Primeiro, escolha o número aleatório kk, claro, a escolha desse número é restrita, e por enquanto ele é deixado de lado
Calcule r=e+x1r=e+x1, onde (x1,y1)=k∗G(x1,y1)=k∗G
Calcule s=(1+dA)−1∗(k−r∗dA)s=(1+dA)−1∗(k−r∗dA)
Pode-se ver que a frente é feita com uma chave privada.

2. O processo de verificação de assinatura
Verificar a assinatura consiste em usar a assinatura obtida, chave pública, parâmetros da curva elíptica, etc., para verificar a assinatura, e os principais passos da verificação são:
Primeiro, calcule t=r+st=r+s; se t=0t=0, significa que não passou.
Então, os pontos na curva (x1,y1) = s∗G+t∗ PA (x1,y1)=s∗G+t∗ PA são calculados por tt e ss
Depois, calcule R=x1+eR=x1+e, e verifique se RR e rr são iguais; se forem iguais, significa que a verificação foi aprovada.

3. O princípio da verificação
Por que isso pode ser verificado, podemos muito bem derivar:
(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
Pode-se ver que esse ponto na curva elíptica obtido de acordo com a chave pública é consistente com o ponto no momento da assinatura.
Depois, adicione esse x1x1 e as informações recebidas para ver se corresponde à assinatura enviada rr, e ele passa.
---------------------
Autor: leowang666
Fonte: CSDN
Original: https://blog.csdn.net/hugewaves/article/details/59205914
Aviso de Direitos Autorais: Este artigo é um artigo original do blogueiro, por favor, anexe o link do post do blog para reimpressão!





Anterior:【Original】Tutorial de coleta de transferências efíquicas do Google AdSense
Próximo:Vinculações de eventos/atributos angulares @HostListener, @HostBinding
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com