区块链之公钥、私钥、地址之间的关系

一句话解释公钥、私钥、地址 私钥:实际上是一组随机数,关于区块链中的随机数我们已经介绍过了 公钥:对私钥进行椭圆曲线加密算法生成,但是无法通过公钥倒推得到私钥。公钥的作用是在和对方交易时,使用自己的私钥加密信息,然后对方使用自己的公钥解密获得原始信息,这个过程俗称签名。 地址:由于公钥太长,在交易中不方便使用,就对公钥哈希进行SHA256、RIPEMD160、Base58算法加密生成地址

具体过程:

  1. 首先使用随机数发生器生成一个『私钥』。后续的公钥、地址都会由私钥生成,所以一句话概括私钥的重要性:"谁掌握了私钥, 谁就掌握了该钱包的使用权!"
  2. 『私钥』经过椭圆曲线算法(SECP256K1)算法加密生成了'公钥'。这是一种非对称单向加密算法,知道私钥可以算出公钥,但知道公钥却无法反向算出私钥
  3. 『公钥』经过单向Hash算法(SHA256、RIPEMD160)生成『公钥Hash』
  4. 将一个字节的地址版本号连接到『公钥哈希』头部(对于比特币网络的pubkey地址,这一字节为“0”),然后对其进行两次SHA256运算,将结果的前4字节作为『公钥哈希』的校验值,连接在其尾部。
  5. 将上一步结果使用BASE58进行编码(比特币定制版本),就得到了『钱包地址』。

『私钥』『公钥』『钱包地址』间的关系

  在上述的五个步骤里只有“BASE58编码”有相应的可逆算法(“BASE58解码”),其他算法都是不可逆的,所以这些数据之间的关系可以表示为:

可以看出:通过『私钥』可以得到上述计算过程中所有的值。『公钥哈希』和『钱包地址』可以通过互逆运算进行转换,所以它们是等价的。

使用『私钥』对交易进行签名

比特币钱包间的转账是通过交易(Transaction)实现的。交易数据是由转出钱包『私钥』的所有者生成,也就是说有了『私钥』就可以花费该钱包的比特币余额。生成交易的过程如下:

  1. 交易的原始数据包括“转账数额”和“转入钱包地址”,但是仅有这些是不够的,因为无法证明交易的生成者对“转出钱包地址”余额有动用的权利。所以需要用『私钥』对原始数据进行签名。
  2. 生成“转出钱包公钥”,这一过程与生成『钱包地址』的第2步是一样的。
  3. 将“转出签名”和“转出公钥”添加到原始交易数据中,生成了正式的交易数据,这样它就可以被广播到比特币网络进行转账了。

使用『公钥』对签名进行验证

交易数据被广播到比特币网络后,节点会对这个交易数据进行检验,其中就包括对签名的校验。如果校验正确,那么这笔余额就成功地从“转出钱包”转移到“转入钱包”了。

欢迎订阅「K叔区块链」 - 专注于区块链技术学习

博客地址:http://www.jouypub.com

简书主页:https://www.jianshu.com/u/756c9c8ae984

segmentfault主页:https://segmentfault.com/blog/jouypub

腾讯云主页:https://cloud.tencent.com/developer/column/72548

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏安智客

GP TEE需支持的加解密算法

GP TEE规范规定了TEE所需支持的加解密算法标准,一张图表示如下(点击看大图) ? 密码学博大精深,而且在不断发展研究我们今天只是简要介绍一下,后期会有针对...

2416
来自专栏along的开发之旅

使用openssl命令加解密 aes-128-cbc的简单示例

版权声明:欢迎传播,请标明出处。 https://blog.csdn.net/u201011221/article/details/8278...

1682
来自专栏小工匠技术圈

【小工匠聊密码学】--密码学--综述

1202
来自专栏大闲人柴毛毛

聊聊对称/非对称加密在HTTPS中的应用

目前常用的加密算法主要分成三类: 对称加密算法 非对称加密算法 消息摘要算法 在互联网中,信息防护主要涉及两个方面:信息窃取和信息篡改。对称/非对称加密算法能够...

4455
来自专栏腾讯移动品质中心TMQ的专栏

【腾讯TMQ】从 wireshark 抓包开始学习 https

目前互联网大量Web的应用层协议从http迁移到了https,https已经在越来越多的场合替换http协议。近期由于业务需要,我们通过Wireshark对ht...

2.1K2
来自专栏java达人

nginx配置https(亲测可用)

配置https前需要先创建证书,这里使用自签名ca证书: 1、创建ca自签名证书,使用sha256 算法签名,rsa2048位公钥算法。 openssl req...

4226
来自专栏空帆船w

Android APK 签名原理

Android APK 签名原理涉及到密码学的加密算法、数字签名、数字证书等基础知识,这里做个总结记录。

3313
来自专栏腾讯移动品质中心TMQ的专栏

从wireshark抓包开始学习https

导语 目前互联网大量web的应用层协议从http迁移到了https,https已经在越来越多的场合替换http协议。近期由于业务需要,我们通过Wireshark...

3926
来自专栏北京马哥教育

加密传输原理

数字签名,就是通过在数据单元上附加数据,或对数据单元进行秘密变换,从而使接收者可以确认数据来源和完整性。简单说来,数字签名是防止他人对传输的文件进行破坏,以及确...

35310
来自专栏owent

ECDH椭圆双曲线(比DH快10倍的密钥交换)算法简介和封装

前面有几篇blog就提到我有计划支持使用ECDH密钥交换。近期也是抽空把以前的DH密钥交换跨平台适配从atgateway抽离出来,而后接入了ECDH流程。

2653

扫码关注云+社区

领取腾讯云代金券