将私钥转换成钱包导入的格式WIF

最近一直在开发项目,涉及10种主流币种的对接,比特币,以太坊,瑞波币,eos,比特现金等,现在对这十种币的地址有了深入的理解,记录下来,方便以后复习

私钥转导入钱包格式–private key–>wallet import format

1-私钥

例如:`0C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D

2-增加0x80版本号到私钥的前面

例如:`800C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D

3-对2得到的结果进行sha-256哈希运算

例如:`8147786C4D15106333BF278D71DADAF1079EF2D2440A4DDE37D747DED5403592

4-再次对3得到的结果进行sha-256哈希运算

例如:`507A5B8DFED0FC6FE8801743720CEDEC06AA5C6FCA72B07C49964492FB98A714

5-取4得到的结果的前四个字节作为效验位

例如:`507A5B8D

6-将5得到的效验位加在2的结果的后面

例如:`800C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D507A5B8D

7-使用base58对6的结果进行编码

例如:`5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ

这就是将一个私钥原来就是01010100这样的组合使用十六进制进行显示后大家看到的样子,转换成可以导入钱包的过程

钱包导入格式转私钥wif–>private key

1-钱包导入格式

例如:`5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ

2-将1的值使用base58解码

例如:`800C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D507A5B8D

3-丢掉2的最后面4字节效验位

例如:`800C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D

4-丢掉3前面的第一个字节80版本号

例如:`0C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D

以上就是完整的两种形式的转换过程,具体的实现只是每种语言的不同而异,我用的是go,可以参考github`

你可能感兴趣的:(比特币)