1.私钥--》公钥--》比特币地址
私钥k进行椭圆曲线相乘得到公钥K,公钥K通过哈希得到比特币地址;
2.私钥随机生成
在一个密码学安全的随机源中取出一长串随机字节,对其使用SHA256哈希算法进行运算,产生一个256位的数字。
3.公钥生成
通过椭圆曲线算法生成,具有单向性;{K = k * G}
公钥是在椭圆曲线上的一个点,由一对坐标(x,y)组成。公钥通常表示为前缀04紧接着两个256比特的数字。其中一个256比特数字是公钥的x坐标,另一个256比特数字是y坐标。前缀04是用来区分非压缩格式公钥,压缩格式公钥是以02或者03开头。
4.比特币地址生成
由公钥通过双哈希获得,以公钥K为输入,计算其SHA256哈希值,并以此结果计算RIPEMD160哈希值,得到一个长度为160比(20字节)的数字;
最终见到的地址还进行了“Base58Check”编码,Base58由不包括(0,O,l,I)的大小写字母和数字组成,文本形式方便阅读,增加校验码进行校验;
5.密钥格式
WIF:钱包导入格式,就是Base58编码格式;5开头;
WIF-compressed:压缩钱包导入格式,K或者L开头;
压缩私钥:私钥后带01后缀,最终会生成WIF-compressed;
非压缩私钥:只有生成的私钥,不带后缀,最终会生成WIF;
压缩公钥:只保存x坐标,y坐标可以通过x得出;但x对应曲线奇偶两个y,因此压缩时前缀需要用02表示奇数,03表示偶数;
非压缩公钥:带有x和y坐标,前缀04紧接着两个256比特的数字;
新钱包都使用压缩格式,老钱包使用非压缩格式;如果一个比特币钱包实现了压缩格式公钥,那么它将会在所有交易中使用该压格式缩公钥。钱包中的私钥将会被用来生成压缩格式公钥,压缩格式公钥然后被用来生成交易中的比特币地址。
参考文献:“精通比特币,Andreas•M•Antonopoulos (O'Reilly)。版权2015 Andreas•M•Antonopoulos, 978-1-449-37404-4.”