Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 12821|Ответ: 0

[C] Принцип проверки цифровой подписи SM2

[Скопировать ссылку]
Опубликовано 26.06.2019 10:09:45 | | |
SM2 — это алгоритм цифровой подписи, основанный на эллиптических кривых, и объяснение эллиптических кривых можно увидеть в предыдущем Weibo, посвящённом эллиптическим кривым, а ниже приведено краткое введение в процесс создания SM2-сигнатуры.
Для подписи информации это исходная информация, полученная через хеш-функцию после определённой обработки, алгоритм хеширования использует национальный секретный алгоритм SM3, этот процесс также пропускается, вводится только процесс подписания ключа и проверки.

1. Процесс подписания
Пусть GG — точка отсчёта на эллиптической кривой, dAdA — приватный ключ, PAPA — публичный ключ, PA=dA∗GPA=dA∗G
Результат подписи (r,s) (r,s) получается цифровой подписью EE, а процесс расчёта следующий:
Во-первых, выберите случайное число kk, конечно, выбор этого числа ограничен, и пока его оставляют
Вычислим r=e+x1r=e+x1, где (x1,y1)=k∗G(x1,y1)=k∗G
Вычислим s=(1+dA)−1∗(k−r∗dA)s=(1+dA)−1∗(k−r∗dA)
Видно, что фасад выполнен с помощью приватного ключа.

2. Процесс проверки подписи
Проверка подписи заключается в использовании полученной подписи, открытого ключа, параметров эллиптической кривой и т.д. для проверки подписи, а основные этапы проверки включают:
Сначала вычислим t=r+st=r+s, если t=0t=0, значит, тест не прошёл.
Тогда точки на кривой (x1,y1) = s∗G+t∗ PA (x1,y1)=s∗G+t∗ PA вычисляются по tt и ss
Затем вычислите R=x1+eR=x1+e, и проверите, равны ли RR и rr; если они равны, это означает, что проверка пройдена.

3. Принцип верификации
Почему это можно подтвердить, можно вывести из этого:
(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 =sG+(r+s)PA =stPA =sG+(r+s)PA =sPA =sg+(r+s)PA = sg+(r+s)PA = sG+(r+s)PA = sg+(r+s)PA = sg+(r+s)PA =sPA =sg+(r+s)PA = sG+(r+s)PA = sg+(r+s)PA = sPA) = sG+tPA = sg+(r+s)PA = sG+tPA = sg+(r+s)PA = s            =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
Видно, что эта точка на эллиптической кривой, полученная по открытому ключу, согласуется с точкой в момент подписи.
Затем добавьте этот x1x1 и полученную информацию, чтобы проверить, совпадает ли она с отправленной подписью rr, и она проходит.
---------------------
Автор: leowang666
Источник: CSDN
Оригинал: https://blog.csdn.net/hugewaves/article/details/59205914
Уведомление об авторском праве: Эта статья является оригинальной статьёй блогера, пожалуйста, приложите ссылку на пост для перепечатки!





Предыдущий:【Original】Google AdSense Wire Transfer collection tutorial
Следующий:Привязка угловых событий/атрибутов @HostListener, @HostBinding
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com