主页 > imtoken官网注册 > 比特币背后的密码学原理(第 2 部分)

比特币背后的密码学原理(第 2 部分)

imtoken官网注册 2023-09-10 05:09:44

比特币 钱包 未确认_比特币钱包文件分享_雷达币钱包里的比特币咋提现

目录:

前言

1.密码学理论

2. 比特币在行动

3. 区块链

4、挖矿原理

五、总结

2. 比特币实践

比特币钱包文件分享_比特币 钱包 未确认_雷达币钱包里的比特币咋提现

下面,让我们真刀真枪,一起来看看比特币的编码世界吧。

1.Base58和Base58Check编码

请允许我在这里使用教义。 我觉得王淼等老师翻译的Andreas M. Antonopoulos的《精通比特币》已经把这个问题讲得很清楚了。 有关更详细的说明,您还可以阅读此处。

为了更简洁方便地表示一长串数字,许多计算机系统使用由数字和字母组成的大于十进制的表示法。 例如,传统的十进制计数系统使用十位数字 0-9比特币钱包文件分享,而十六进制系统使用额外的六个字母 AF。 同一个数,它的十六进制表示会比十进制表示短。 更进一步,Base64 使用 26 个小写字母、26 个大写字母、10 个数字和两个符号(如“+”和“/”)在电子邮件等基于文本的媒体中传输二进制数据。 Base64 通常用于对电子邮件中的附件进行编码。 Base58 是一种基于文本的二进制编码格式,用于比特币和其他加密货币。 这种编码格式不仅实现了数据压缩,保持了易读性,还具有错误诊断功能。 Base58是Base64编码格式的一个子集,同样使用大小写字母和10位数字,但舍弃了一些在特定字体中容易误读和混淆的字符。 具体来说,Base58不包含Base64中的0(数字0)、O(大写o)、l(小写L)、I(大写i)和“+”、“/”两个字符。 简而言之,Base58是由不包括(0, O, l, I)的大小写字母和数字组成的。

需要注意的是Base58编码是不包含校验信息的。 Base58Check是比特币常用的一种Base58编码格式,在数据转录中加入了错误校验码来检查错误。 校验码长4个字节,加在待编码数据之后。

为了使用Base58Check编码格式对数据(数字)进行编码,首先我们需要为数据添加一个名为“version byte”的前缀,用于明确需要编码的数据类型。 例如比特币地址的前缀为0(十六进制为0x00),私钥编码时前缀为128(十六进制为0x80)。 表 4-1 列出了一些常见的版本前缀。

接下来,我们计算一个“双哈希”校验和,这意味着对先前的结果(前缀和数据)运行 SHA256 哈希两次:

比特币钱包文件分享_比特币 钱包 未确认_雷达币钱包里的比特币咋提现

校验和 = SHA256(SHA256(前缀+数据))

在生成的 32 字节长哈希(两次哈希操作)中,我们只取前 4 个字节。 这 4 个字节用作校验码。 数据后将添加校验和。 结果由三部分组成:前缀、数据和校验和。

2. 密钥、地址和钱包

先说结论:

1、密钥通常是指保护比特币资产的所有权用户对应的私钥。 在某些情况下,私钥和公钥也被模糊地称为密钥。 这里我们指的是私钥的狭义解释。

2. 大多数情况下,地址是指对公钥的封装(有时除了公钥外还有脚本)。

3. 钱包是私钥的容器,通常通过有序文件或简单的数据库来实现。 比特币钱包包含私钥和公钥数据,虽然公钥数据理论上不需要存储。

比特币钱包文件分享_雷达币钱包里的比特币咋提现_比特币 钱包 未确认

2.1 私钥保护

私钥必须保密。 私钥的机密性要求实际上很难实现,因为该要求与安全对象的同等重要可用性相矛盾。 当您需要存储备份以防私钥丢失时,您会发现私钥的隐私很难维护。 使用密码加密带有私钥的钱包可能更安全,但该钱包也需要备份。 例如,有时用户需要将密钥从一个钱包转移到另一个钱包,因为他们想要升级或重新安装钱包软件。 私钥备份可能还需要存储在纸上(参见“4.5.4 纸钱包”)或外部存储介质,例如 U 盘。 但是,如果备份文件被盗或丢失怎么办? 这些相互矛盾的安全目标推动了 BIP0038 的推出比特币钱包文件分享,这是一种便携、方便且可被许多不同钱包和比特币客户端理解的加密私钥标准。

BIP0038提出了一个通用标准,使用密码对私钥进行加密,使用Base58Check对加密后的私钥进行编码,使得加密后的私钥可以安全地存储在备份介质中,安全地在钱包之间传输,密钥保存在在任何可能的暴露情况下的安全性。 该加密标准使用 AES,它由 NIST 建立,广泛用于商业和军事应用中的数据加密。

2.2 公钥和地址

我们知道比特币协议的区块链其实是交易的维护而不是账户的维护。 交易数据本身不需要私钥,所以对公钥即地址的封装尤为重要,需要考虑安全性。 效率和可扩展性。

从公钥到地址经历了以下过程:

雷达币钱包里的比特币咋提现_比特币钱包文件分享_比特币 钱包 未确认

雷达币钱包里的比特币咋提现_比特币钱包文件分享_比特币 钱包 未确认

A = RIPEMD160(SHA256(K))

式中,K为公钥,A为生成的比特币地址。 比特币地址与公钥不同。比特币地址是由公钥通过单向哈希函数生成的

以公钥K为输入,计算其SHA256哈希值,并根据结果计算RIPEMD160哈希值,得到一个长度为160位(20字节)的数字,再用Base58Check编码得到比特币地址. 从编码数据结构来看,如下:

雷达币钱包里的比特币咋提现_比特币钱包文件分享_比特币 钱包 未确认

需要注意的是,公钥信息不能从地址中逆向,所以需要将私钥、对应的公钥和地址一起存储。

2.3 比特币钱包

比特币钱包要解决的核心问题是私钥管理。 早期的方法是随机生成一个私钥池,一次加密一个。 这当然是一种高度安全的解决方案。 但是存储、导入导出备份都带来了很大的挑战。 毕竟私钥丢了谁也无能为力。 改进后的私钥管理方式对私钥链进行管理,如下图所示:

比特币钱包文件分享_雷达币钱包里的比特币咋提现_比特币 钱包 未确认

雷达币钱包里的比特币咋提现_比特币钱包文件分享_比特币 钱包 未确认

链式结构的生成过程如下:

比特币钱包文件分享_比特币 钱包 未确认_雷达币钱包里的比特币咋提现

未完待续...

雷达币钱包里的比特币咋提现_比特币钱包文件分享_比特币 钱包 未确认

关于作者:

Numa,数字货币爱好者,认真的大学毕业生,热爱技术,拥有持续的好奇心。

比特币钱包文件分享_雷达币钱包里的比特币咋提现_比特币 钱包 未确认

雷达币钱包里的比特币咋提现_比特币钱包文件分享_比特币 钱包 未确认