Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 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            =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
Уведомление за авторски права: Тази статия е оригинална от блогъра, моля, прикачете линк към блог публикацията за препечатване!





Предишен:【Оригинал】Google AdSense Wire Transfer Collection tutorial
Следващ:Ъглови обвързвания на събития/атрибути @HostListener, @HostBinding
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com