简化区块链中的数字签名

news/2024/7/7 21:56:54
想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】
链客,有问必答!

现在我们经常在区块链中看到数字签名这一术语是非常常见的。在发送交易时,无论是比特币、Ethereum、Hyperledger Fabric还是任何其他平台,都在使用数字签名进行签名和验证。

区块链中的数字签名

在今天的主题中,我将解释更多关于如何使用ECDSA算法生成数字签名以及如何验证相同的签名。

ECDSA算法

从A点到B点在椭圆曲线上的切线

根据wiki ECDSA为:

椭圆曲线密码体制是一种基于有限域椭圆曲线代数结构的公钥密码体制。与非对称密码学相比,ECC需要更小的密钥来提供同等的安全性。椭圆曲线适用于密钥协议、数字签名、伪随机发生器等任务。通过将密钥协议与对称加密方案相结合,它们可以间接用于加密。它们也被用于一些基于椭圆曲线的整数分解算法中,这些算法在密码学中有广泛的应用,例如Lenstra椭圆曲线分解。

简单来说,ECDSA算法可以使用公钥密码学方法生成公钥/私钥集合,用于签名和验证签名。让我们看看公钥密码学是什么样子的。

公钥和私钥由加密算法生成,如RSA,ECDSA。发件人通过收件人公钥加密邮件并发送。在另一端,收件人通过自己的私钥解密消息并获取消息。
现在回过头来看看ECDSA,利用椭圆曲线在给定的源点G上画切线,生成密钥。p是一个具有很大值的有限模。

椭圆曲线上的切线
椭圆曲线上的切线定义为

Y²mod p=(x³+7)mod p
G:来源点
p:为椭圆曲线定义范围。

生成数字签名的私钥和公钥:

从一个随机生成的数字为dA的私钥开始,我们将它乘以曲线上的一个预定点,称为生成点G,在曲线的另一个地方产生另一个点,也就是对应的公钥Qa。生成点被指定为secp256k1标准的一部分,对所有键都是相同的。

从私钥dA生成公钥Qa

使用ECDSA算法生成数字签名

利用私钥dA生成签名

验证签名

验证是签名生成函数的逆值,使用R、S值和公钥计算一个值P,这是椭圆曲线上的一个点(创建签名时使用的临时公钥P)。

总结

数字签名可以使用自己的私钥签名,并且可以使用公钥独立进行验证。公开签名在任何情况下都不会导致获取用户的私钥。因此,ECDSA算法在保证私钥安全的同时生成签名。


http://lihuaxi.xjx100.cn/news/238339.html

相关文章

Java基础-泛型

Java基础-泛型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 一.泛型的引入 由于集合可以存储任意类型的元素,导致取出时,如果出现强转就会引发运行时异常(ClassCastException…

spring vertx_如何在Spring设置Vertx

spring vertxby Rick Lee李瑞克(Rick Lee) 如何在Spring设置Vertx (How to set up Vertx in Spring) Spring is probably the most popular framework in the Java space. We all love its dependency injection and all that autowired/configuration magic. It makes unit t…

区块链和去中心化的弱点

想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】 链客,有问必答!技术人员通常认为区块链是一种纯粹的、无损的产品。即使是那些抨击比特币的人,也会称赞区块链,仿佛这是种超越。 从某种程度上来说&…

塞尔达传说顺序_编码《塞尔达传说》克隆图例

塞尔达传说顺序In this lecture from Colton Ogden, you can learn game development principles by coding a classic Legend of Zelda clone in Lua. The principles you learn can apply to any programming language and any game.在科尔顿奥格登(Colton Ogden)的演讲中&am…

.net core 2.0 部署到centos 7生产环境

.netcore的跨平台如此之火,忍不住想试试 在linux下部署 .net 程序。 借鉴此篇博文:将ASP.NET Core应用程序部署至生产环境中(CentOS7) 虽然是借鉴,但过程坎坷。对从未使用过linux的我难度可想而知,但万事有…

java面试题2019 答案

Java 面试随着时间的改变而改变。在过去的日子里,当你知道 String 和 StringBuilder 的区别(String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象。因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String…

我的友情链接

xiaoli110的博客转载于:https://blog.51cto.com/11660580/2042685

构建静态服务器_为静态网站构建无服务器联系表

构建静态服务器介绍 (Introduction) A few years ago AWS launched static hosting service S3, which was a paradigm shift for hosting static websites. The tech was crystal clear, all the static assets (HTML, CSS, and JS) would reside in an S3 bucket to host you…