区块链-Base58Check编码

目录:https://blog.csdn.net/qq_40452317/article/details/89646633 

A=RIPEMD160(SHA256(K)),其中K是公钥,A是地址。

平时所见的比特币地址就是A经过Base58Check编码过后得来的。

Base编码

是一种二进制转可视的字符串的算法,主要是用来把大的整数转换成字符串的形式,计算机系统中传输的数据是二进制的,这样是非常不方便的,所以通常为了更简洁的表示,我们会使用一些更大进制的表达方法,比如十进制(0-9),十六进制(0-9和A-F),十六进制比十进制更短更简洁。

Base64

而Base64采用了26大小写字母,十个数字以及"+"和"/"六十四个字符。说白了简单理解就是将二进制数转化为六十四进制的数。这个就是Base64编码。(具体:https://blog.csdn.net/qq_40452317/article/details/90144390)。

将Base64中的六十四字符去掉几个就成了Base58编码。具体地,Base58不含Base64中的0(数字 0)、O(大写字母 )、l(L的小写字母 )、I(i的大写字母 ),以及“+” 和“/”两个字符。简而言之,Base58 就是由不包括(0,O,l,I)的大小写字母和数字组成。去掉这六个刚好是58个,所以就称为Base58.

什么是Base58Check?

比特币中使用的是Base58Chec而不是Base58,他们之间的区别就是Base58Chec有验证机制。再传播过程中,如果漏写几个字符,Base58检测不出来,所以没有使用Base58。

Base58Check编码过程?

首先我们要对数据添加一个称作“版本字节”的前缀,这个前缀用来识别编码的数据的类型。例如,比特币地址的前缀是 0(十六进制是 0x00),而对私钥编码时前缀是128(十六进制是 0x80)。 

区块链-Base58Check编码_第1张图片

然后我们计算“双哈希”校验和,意味着要对之前的结果(前缀和数据)运行两次 SHA256哈希算法:

                               checksum=SHA256(SHA256(prefix+data))

在产生的长 32 个字节的哈希值(两次哈希运算)中,我们只取前4个字节。这4个字节就作为检验错误的代码或者校验和。校验码会添加到数据之后。结果由三部分组成:前缀、数据和校验和。这个结果采用之前描述的Base58字母表编码。

              区块链-Base58Check编码_第2张图片

使用 Base58Check编码,可以实现数据压缩,易读而且有错误检验。

你可能感兴趣的:(bitcoin,区块链,密码学)