从字节层面拆开来看,公钥的详细生成流程如图3.9所示:
1)私钥是32字节(256位)的随机数;
2)在私钥头部加上版本号;
3)在私钥尾部加上压缩标志;
4)将私钥进行两次SHA256哈希运算,取两次哈希结果的前4字节作为校验码,添加到压缩标志之后;
5)将2,3,4步得到的随机数用BASE58进行编码,就可以得到WIF(Wallet import Format)私钥(用于钱包之间导入导出私钥,是用户较为常见的密钥格式)。
6)私钥经过椭圆曲线乘法运算,可以得到公钥。公钥是椭圆曲线上的点,并具有x和y坐标。