• 微课视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
微课江湖
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 微课视频
  • 安全教程
  • 安全设置
  • 杀毒防毒
  • 病毒查杀
  • 脚本攻防
  • 入侵防御
  • 工具使用
  • 业界动态
  • Exploit
  • 漏洞分析
  • 加密解密
  • 手机安全
  • 区块链
您的位置:首页 > 网络安全 >区块链 > 比特币私钥,公钥和地址的关系

比特币私钥,公钥和地址的关系

作者:简书 字体:[增加 减小] 来源:互联网 时间:2018-11-03

简书向大家分享了比特币私钥,公钥和地址的关系,其中包含比特币私钥,比特币公钥等知识点,遇到此问题的同学们可以参考下
哈希函数

哈希函数(Hash Function),也称为散列函数,给定一个输入x,它会算出相应的输出H(x)。哈希函数的主要特征是:

1.输入x可以是任意长度的字符串

2.输出结果即H(x)的长度是固定的

3.计算H(x)的过程是高效的(对于长度为n的字符串x,计算出H(x)的时间复杂度应为O(n))

椭圆曲线加密算法

椭圆曲线在密码学中的使用是在1985年由Neal Koblitz和Victor Miller分别独立提出的。它的主要优势是在某些情况下它比其他的算法(比如RSA)使用更小的密钥但提供相当的或更高等级的安全性。

比特币使用了基于secp256k1椭圆曲线数学的公钥密码学算法。它包含私钥与公钥,私钥用于对交易进行签名,将签名与原始数据发送给整个比特币网络,公钥则用于整个网络中的节点对交易有效性进行验证。签名算法保证了交易是由拥有对应私钥的人所发出的。

BASE58编码

Base58是用于Bitcoin中使用的一种独特的编码方式,主要用于产生Bitcoin的钱包地址
相比Base64,Base58不使用数字"0",字母大写"O",字母大写"I",和字母小写"l",以及"+"和"/"符号

1.比特币所用字母表:

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

2.Monero所用字母表:

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
3.Ripple所用字母表:

rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz

私钥

实际上是长度为256bit的二进制数,256 bit = 1.15e+77
宇宙中所有原子的总数大概是10的80次方。如果我们进行2256+1次随机生成私钥,那么必然会生成一个此前出现过的私钥;甚至从概率的角度看,进行2130次私钥生成就会有99%的可能得到已有私钥,但是这个情况目前极难出现。

公钥

使用椭圆曲线加密算法(ECDSA-secp256k1)计算私钥所对应的非压缩公钥,该过程不可逆。

公钥的长度为65bytes:

头部标识:1byte(0x04)

X-integer:32bytes(BE)

Y-integer:32bytes(BE)

地址

将公钥经过多次哈希散列及处理生成btc地址。

非压缩公钥生成地址的过程:

1.将完整公钥(头部标识 + X-integer + Y-integer)进行一次sha256()运算, 在对结果进行一次ripemd160()运算,结果a的长度为20bytes

2.在步骤1得到的结果前加上Network ID Byte:

Main Network: 0x00
Test Network: 0x6f
Namecoin Net: 0x34

得到的b长度为21bytes

3.对步骤2得到的结果进行连续两次的sha256()运算,然后只取运算结果的前4bytes作为Checksum

4.在步骤2的b末尾添加上步骤3得到的Checksum, 得到c, 长度为25bytes

5.对步骤4生成的c进行Base58编码, 即得到地址

步骤图示:
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 比特币钱包地址、私钥和公钥:到底是啥关系?
  • 比特币私钥,公钥和地址的关系

相关文章

  • 2018-11-03YObit.net 数字货币交易平台注册使用教程
  • 2018-11-03私钥攻击!权益证明协议的最大要害
  • 2018-11-03深度分析Raft的主要特点
  • 2018-11-03比特币区块链核心技术详解
  • 2018-11-03DAO是什么及其工作原理
  • 2018-11-03比特币交易平台排名榜
  • 2018-07-07用Python从零开始创建区块链
  • 2018-11-03区块链知识分享——Ripple(瑞波)
  • 2018-11-03为什么所有人都错过了最近500年内最重要的发明(第一章)
  • 2018-11-03揭开区块链的神秘面纱

文章分类

  • 安全教程
  • 安全设置
  • 杀毒防毒
  • 病毒查杀
  • 脚本攻防
  • 入侵防御
  • 工具使用
  • 业界动态
  • Exploit
  • 漏洞分析
  • 加密解密
  • 手机安全
  • 区块链

最近更新的内容

    • 基础:区块链为什么叫区块链
    • DDAO:去中心化数据访问对象
    • 门罗币(XMR)挖矿教程(f2pool)
    • 基于以太坊的联盟链?Quorum机制初探(上)
    • 从零开始,创建自己的区块链
    • Aion挖矿教程(鱼池F2Pool)
    • 什么是代币(token)
    • 萌奈币(MonaCoin)挖矿教程
    • 什么是BCH(Bitcoin Cash),什么是比特币现金BCC
    • Substrate是什么?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2015-2018 All Rights Reserved. 微课江湖 版权所有