golang 实现比特币内核:实现基于椭圆曲线的数字签名和验证

我们已经展示了,给定生成点 G,并选择一个足够大的标量 e,我们可以轻松计算出 P=e*G,但是当你拥有 G 和 P 时,几乎不可能得到 e。这是椭圆曲线加密的基础。

所选择的标量 k 被称为私钥,而 Q 是公钥。注意,k 是一个256位的整数,而 Q 包含两部分:一个是 x 坐标,另一个是 y 坐标。

这种公钥加密的名称是椭圆曲线数字签名算法,简称 ECDSA。它涉及以下步骤:

复制代码
选择一个标量 e,计算 P = e*G,其中 e 是私钥,P 是公钥,将 P 公之于众,所有人都可以知道它。

私钥的持有者随机选择两个有限域成员 u 和 v,并计算 k = u + ve,k 需要保密。

计算 R = k * G = (u + v*e)*G = u*G + v*(e*G) = u*G+v*P,我们仅使用 R 的 x 坐标,并将 x 的值命名为 r。

私钥持有者生成一条任意长度的消息文本(可以公开),并通过 sha256 或 md5 将其哈希为一个256位的数字,称该哈希结果为 z。

通过公式 s = (z + r*e) / k 计算一个数字 s(所有这些计算都基于模 p 的运算)。

将三元组 (z, s, r) 作为私钥持有者的签
相关推荐
龙亘川7 分钟前
旅游强国建设|一网统管智慧旅游服务模块,赋能节假日文旅数字化治理
大数据·数据库·人工智能·科技·智慧城市·旅游
星火跨境XINGHUOS18 分钟前
技术向辨伪:从商标查证到源码资产,如何核验网络上的z真假“星火跨境“
数据库
小木_.19 分钟前
Python 离线识别滑块缺口距离,项目推荐
开发语言·python·滑块识别·人机验证·滑块缺口·缺口识别
liliangcsdn31 分钟前
因子权重矩阵处理-因子权重收缩Shrinkage算法的探索
开发语言·python·机器学习
Databend33 分钟前
只看 PASS 会骗你,6 条 Agent Trace 里的 Coding Agent 评测真相
大数据·数据库·agent
Wang's Blog1 小时前
Java框架快速入门: Spring Security+OAuth2之密码验证规则与自定义注解
java·数据库·spring
少陽君1 小时前
Python 并发编程:IO 等待用线程/asyncio,CPU 计算才用进程
数据库·python·php
aramae1 小时前
模拟实现strstr函数(C语言)
c语言·开发语言·算法
这个DBA有点耶1 小时前
VLDB 2026核心议题解读:当负载被AI改写,数据库的内核该往哪走?
数据库·架构·aigc
liliangcsdn1 小时前
因子权重矩阵处理-滞回缓冲带+降频稳定化动态重选
开发语言·python·算法