type
status
date
slug
summary
tags
category
icon
password
Sub-item
Last edited time
Oct 28, 2023 10:44 AM
Parent item
领域
签名过程
以签名者A为例,表示的私钥,表示的公钥,签名过程如下:
- 计算 ,
- 为2个字节,表示的比特长度,值为128
- 表示A的标志, 值为
- 为椭圆曲线参数
- 、为的基点坐标(对应公钥)
- 、为的公钥坐标(对应公钥)
其中:
- 计算,其中为待签名消息
- 计算哈希:
- 用随机数发生器产生随机数,满足 ,作为临时随机私钥
- 计算临时随机公钥:椭圆曲线点,如果需要恢复公钥, 那么还需要记录坐标的奇偶性
- 计算,若或则需要重复第四步生成一个新的随机私钥, 重新计算
- 计算,若则需要重复第四步生成一个新的随机私钥, 重新计算
- 最后输出签名结果:
因此, 最后公开的数据有:签名者A的公钥,被签名的消息,签名结果。
验签过程
- 计算
- 计算
- 计算
- 根据签名结果计算 , 若,则验证不通过
- 根据和,计算一个椭圆曲线的坐标:
- 取坐标的轴上的值,计算,检验是否成立,若成立则验证通过;否则验证不通过;
第5步推导过程:
恢复公钥
恢复公钥是指从签名的数据中推导出签名者的公钥信息。在公链中,由于任何账户都能随时随地签名并发送交易,而交易信息里一般只保留签名者的地址,不携带签名者的公钥,目的是为了减少交易数据的大小,降低交易传播的网络开销。
恢复公钥流程如下:
- 计算随机公钥的坐标轴的值:;
- 因为在签名时记录了随机公钥的奇偶位,所以根据根据值和奇偶位,可以推导出随机公钥的y坐标轴的值;
- 根据公式:,计算有:。