主页 > imtoken安卓官方版 > 详细的比特币密码学
详细的比特币密码学
图片.png
上图描述了密码学的所有分类以及相应的信息安全分类。
比特币涉及的密码学知识包括:
1.私钥、公钥、钱包地址
私钥是一个 256 位的二进制随机数。
私钥通过椭圆曲线乘法的单向加密函数生成公钥; 公钥通过 SHA256 和 RIPEMD160 双重哈希生成比特币钱包地址。
私钥、公钥和钱包地址的关系如下图所示:
私钥、公钥、钱包地址
公钥生成钱包地址:
分为两步。
1. 公钥散列
2.公钥哈希编码到钱包地址
SHA256请参考:
SHA256的简单总结包括三部分:
常量初始化
SHA256算法中使用了8个哈希初值和64个哈希常量
这些初始值是从自然数中前8个素数(2、3、5、7、11、13、17、19)的平方根的小数部分的前32位推导出来的
信息预处理
SHA256算法中的预处理是在要进行哈希处理的消息之后补充需要的信息比特币算法原理详解,使整条消息满足指定的结构。
信息的预处理分为两步:附加填充位和附加长度
使用的逻辑操作
SHA256哈希函数涉及的运算都是逻辑位运算
2.非对称加密
在比特币系统中,我们使用公钥加密(非对称加密)来创建密钥对来控制比特币的获取。 这个密钥对由一个私钥和一个(从私钥唯一派生的)公钥组成。 公钥用于接收付款,私钥用于签署交易以消费比特币。
2.1 椭圆曲线算法
2.2 RSA算法
2.3 数字签名
在比特币系统中,数字签名技术用于验证交易的归属和真实性。
数字签名是指对一条信息进行签名,以表示对其的认可。 该认可仅对该信息有效,第三方无法根据您的签名为其他信息构建您的签名。 数字签名方案包括:
生成公私钥对,私钥用于签名,必须妥善保管; 公钥可以公开给其他人验证签名的有效性
信息和私钥作为输入,输出为签名
使用公钥、消息和签名作为输入进行验证
在实践中,我们经常对哈希值进行签名比特币算法原理详解,这样我们就可以对任意长度的信息进行签名。
详细过程可以看What is a Digital Signature?
和非对称加密概述中的数字签名部分
2.4 数字证书
数字证书是非对称加密的另一个重要应用。 据我所知,它们并没有直接应用于比特币系统。 但这确实是一个重要的概念。 作为链圈和币圈的人,如果有兴趣,不妨了解一下什么是数字证书?
推荐看这篇关于数字证书原理的文章,讲的很清楚
3.base58编码
Base58编码广泛用于比特币密钥和地址的编码,以增强密钥或地址的可读性,防止传输或转录过程中的错误。
图片.png
3.1 Base58编码
Base58是比特币特有的编码方式,主要用于生成比特币钱包地址。
base58是在base64编码的基础上得到的,去除混淆字母(不要使用数字“0”、大写“O”、大写“I”、小写“l”),影响双击选择字符的字符串(“+”和“/”符号)。
我们首先要了解什么是Base64编码
维基:base64
Base64 笔记(阮一峰的博客)
那就来学习base58编码吧
维基:base58
给我学一个比特币:Base58
3.2 Base58Check编码
Base58Check编码实际上是在Base58编码的基础上增加了一个校验过程。 过程并不复杂,如下图所示:
图片.png
其实上图已经很清楚的描述了Base58Check编码的过程。 更多详情请参考:
bitcoinwiki : Base58Check编码