这个部分主要的关键知识点主要是三个,分别是密钥、地址和钱包。 我针对这个部分做了思维导图,具体如下:
一、密钥
比特币的钱包包含一系列的密码对,密钥分为私钥和公钥。私钥好比我们的银行卡密码,公钥好比我们银行卡的卡号。
而私钥和公钥之间是什么样的关系呢?
比特币是采用了非对称的加密算法技术,私钥是数字k,通常是随机产生的,而公钥则是私钥通过椭圆曲线加密算法产生的。具体就是K(公钥)=g*k(私钥)g是生成点的常数点。
1)私钥
私钥是随机产生的,它可以是1和n-1之间的任何数字,其中n是1个常数,n=1.158*10^77, 略小于2^256)
特点: 必须妥善保管,不可泄露,要好好保护,尽量不要在任何公开场合公布。(包括网络,云端等)
格式:私钥可以不同的编码格式显示出来,但是所有这些都对应于相同的256位的数字。
2)公钥
这里有个特点就是,公钥是在得知私钥的情况下,通过椭圆曲线加密算法产生,而且这个过程是不可逆,也就是说即使你知道公钥,但是无法推断出私钥是什么。
K = k * G 。 已知公钥K,能够求私钥k吗?能,但是这是非常困难的,因为k的值可能会存在于10^77 个解当中(只是假设,仅表示数值很多),所以这就像去试验所有可能的k值,即暴力搜索。
格式:非压缩格式或压缩格式公钥这两种形式。前缀04是用来区分非压缩格式公钥, 压缩格式公钥是以02或者03开头。
二、地址
比特币的地址是公钥通过单向加密哈希算法得到的,哈希算法是一种单向函数,接收任意长度的输入产生指纹或哈希。由公钥生成比特币地址的算法主要运用到这两种SHA256 和RIPEMD160 。
A = RIPEMD160(SHA256(K)) K是公钥,A是生成的比特币地址。
因为通过算法得到的是二进制的数字,需要通过编码方式转化容易让人辨识的钱包地址。
这个过程主要采用了Base58和Base58Check编码 这两种编码方式。
三、纸钱包
纸钱包就是将比特币私钥打印在纸张上进行妥善保存。
纸钱包是一个非常有效的建立备份或者线下存储比特币(即冷钱包)的方式。作为备份机制,一 个纸钱包可以提供安全性,以防在电脑硬盘损坏、失窃或意外删除的情况下造成密钥的的丢失。