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) 作为私钥持有者的签
相关推荐
aramae2 分钟前
Python 使用库:标准库与第三方库实战
服务器·开发语言·windows·python
景熙552315 分钟前
14.Java 集合框架从入门到源码万字详解(含 ArrayList/LinkedList/HashMap 源码、泛型通配符、红黑树)
java·开发语言·数据结构·算法
YangYang9YangYan1 小时前
商业数据分析校招项目怎么选,附项目设计与简历包装思路
大数据·数据库·数据分析
李白客1 小时前
数据库培训怎么选?零基础到DBA的学习路线与机构认证对比(2026)
数据库·学习
shark-chili1 小时前
关于AI辅助编程的认知
数据库·人工智能·redis·macos·缓存
SendTomo1 小时前
.ico透明图标在线生成下载平台深度解析
大数据·数据结构·数据库·数据仓库·个人开发
蓝速科技1 小时前
国产化信创终端等保合规核心防护与落地方案丨蓝速科技
大数据·运维·数据库·人工智能·科技
IvorySQL2 小时前
PostgreSQL 日报|在线校验和特性被回退(9 月 17 日)
数据库·人工智能·postgresql
实验室管理云平台2 小时前
北京盛元广通检测管理方案:信息集成、质量控制与移动应用
大数据·数据库·科技
Ivanqhz2 小时前
Unigram 算法
开发语言·人工智能·python·深度学习·mlir