BItCoin源码解析(1)——Base58编码

看了https://blog.csdn.net/pure_lady/article/category/5858993/2好久,决定写下开篇。

比特币加密算法一共有两类:非对称加密算法(椭圆曲线加密算法)和哈希算法(SHA256,RIMPED160算法)。比特币私钥(private key),公钥(public key),公钥哈希值(pubkeyhash),比特币地址(address)
公钥和私钥由椭圆曲线加密算法生成,私钥可推出公钥而反之不能,这也是这篇文章后半部分要隆重介绍的部分。
有了私钥,你就可以对文本签名。别人拿了你的公钥就可以根据签名认证你是否拥有私钥。这就是证明你拥有存款的办法。
为了安全起见,公钥应该隐藏起来。所以对公钥进行哈希加密,生成公钥哈希值然后计算哈希值的比特币地址:
公钥哈希值=RIMPED160(SHA256(公钥))
比特币地址=*1*+Base58(0+公钥哈希值+校验码)
校验码=前四字节(SHA256(SHA256(0+公钥哈希值)))

--------------------- 摘自https://blog.csdn.net/tiandiwuya/article/details/79571639?utm_source=copy

这里的Base58是Base58 编码而不是常用的Base64算法。

base58和base64一样是一种二进制转可视字符串的算法,主要用来转换大整数值。区别是,转换出来的字符串,去除了几个看起来会产生歧义的字符,如 0 (零), O (大写字母O), I (大写的字母i) and l (小写的字母L) ,和几个影响双击选择的字符,如/, +。结果字符集正好58个字符(包括9个数字,24个大写字母,25个小写字母)。不同的应用实现中,base58 最后查询的字母表可能不同,所以没有具体的标准,BitCoin中用的如下:

1~9: 9个(不包含数字0)

a~z(剔除小写的 L ):25个(注意包含了小写的 o)

A~Z(剔除 大写的O 大写的I  ) 24个

猜你喜欢

转载自blog.csdn.net/k_wang_/article/details/82899940