比特币私匙公匙和钱包地址之间的关系想要深入了解比特币的交易部分,需要掌握到很多密码学知识:公钥、私钥、哈希、对称加密、非对称加密、签名等等
那么普通用户最关心的莫过于哪些东西是需要用户认真保管不能对外泄露的,而哪些是可以对外公开的呢
接下来我们先从钱包的地址生成说起
钱包地址生成1
首先使用随机数生成器来生成一个“私钥”
一般来说这是一个256bits的字符串,拥有了这串字符就可以对相应“钱包地址”中的比特币进行操作(比如:花费掉它),所以它必须是被妥善保管的
“私钥”再经过SECP256K1的算法处理,然后生成了“公钥”
SECP256K1是一种椭圆曲线算法,通过一个已知的“私钥”,可以算得对应的“公钥”
但是,知道某一“公钥”,却无法反向计算出“私钥”
这个也是保障比特币安全的算法基础
同SHA256一样,RIPEMD160也是一种Hash算法,由“公钥”可以计算得到”公钥哈希“,同样地,反过来是行不通的
将一个字节的地址版本号连接到“公钥哈希”的头部,然后对其进行两次SHA256运算,将结果的前4个字节作为“公钥哈希”的校验值,连接放在其尾部
将上一步的结果使用BASE58进行编码,就得到了“钱包地址”
比特币钱包地址设定为以数字1开头,实例:1GpxB9kKC3k91jgqbgUDRPiPRNcfuEvjqm“私钥”“公钥”“钱包地址”之间的关系在上述的五个步骤里,唯有“BASE58编码”有相应的可逆算法(即“BASE58解码”),其他的算法都是不可逆的,所以它们之间的关系可以表示为:通过图表所示,很显然我们通过“私钥”可以得到上面整个计算过程中的所有的值
而“公钥哈希”和“钱包地址”之间可以通过互逆运算进行转换,所以它们是等价的
使用“私钥”对交易进行签名比特币钱包地址之间的转账是通过交易(Transaction)来实现的
交易数据是由被转出币的钱