私钥 公钥 地址

重新读《精通比特币》,一遍读不懂我就多读几遍,还不懂我就认为是自己的问题,先记下来。

1、私钥是如何产生的?随机,随机源需要慎重选取,一般会选用密码学安全的伪随机数生成器(CSPRNG),并且需要有一个来自具有足够熵值的源的种子。存储在用户钱包中的数字密钥完全独立于比特币协议,可由用户的钱包软件生成并管理,而无需区块链或网络连接。密钥是成对出现的,由一个私钥和一个公钥所组成。作者说投硬币256次,相当于256个二进制,然后换算成16进制。

私钥是多少位的?还需要加密运算吗?需要Base58吗?后来读程序,私钥是Base64,不需要运算,在程序里的显示是64个字符,256位的二进制数,以64位十六进制数显示,每个十六进制数占4位。

2、私钥如何产生公钥?加密算法,椭圆曲线乘法,是单向加密函数,暴力破解也很困难。公钥是多少位的?公钥也可以用多种不同格式来表示,最重要的是它们分为非压缩格式或压缩格式公钥这两种形式。前缀04是用来区分非压缩格式公钥,压缩格式公钥是以02或者03开头。

私钥 公钥 地址_第1张图片


3、公钥如何生成地址?单向加密Hash函数,Secure Hash Algorithm (SHA)和the RACE Integrity Primitives Evaluation Message Digest (RIPEMD),特别是SHA256和RIPEMD160。地址A = RIPEMD160(SHA256(K)),双Hash160算法,此时会生成长度为160比特(20字节)的数字。

私钥 公钥 地址_第2张图片
私钥 公钥 地址_第3张图片

3、Base58不含Base64中的0(数字0)、O(大写字母o)、l(小写字母L)、I(大写字母),以及“+”和“/”两个字符。简而言之,Base58就是由不包括(0,O,l,I)的大 小写字母和数字组成。

对于这种解释,我打开blockchain.info查看,交易地址都能符合Base58标准,其中有o也是小写字母。

比特币地址以“1”“3”开头,为什么?

私钥 公钥 地址_第4张图片

我们看上图,这些属性使用户可以轻松明确被编码的数据的类型以及如何使用它们。例如我们可以看到他们的不同,Base58Check编码的比特币地址是以1开头的,而Base58Check编码的私钥WIF是以5开头的。

4、公钥和私钥的都可以有多种编码格式。一个密钥被不同的格式编码后,虽然结果看起来可能不同,但是密钥所编码数字并没有改变。这些不同的编码格式主要是用来方便人们无误地使用和识别密钥。

这就解释了我的疑惑,为什么我总是不能够找出编码的规律,而且加上自己对于进制的理解,总会有偏差。

5、比特币钱包。比特币钱包只包含私钥而不是比特币,比特币是以交易输出的形式来储存在区块链中。

你可能感兴趣的:(私钥 公钥 地址)