区块链-密钥的格式

目录:http://www.javashuo.com/article/p-urywvykf-kd.html编程

私钥格式

一下是经常使用的一些私钥中使用的三种格式。十六进制和原始的二进制格式用在软件的内部,不多展现给用户看。WIF格式用在钱包之间密钥的输入和输出,也用于表明私钥的二维码(条形码)。.net

 

Raw原意是"未加工"。RAW格式的全称RAW Image Format,在编程中称之为原始。code

十六进制,简写为hex。orm

WIF(wallet import format),钱包导入格式。blog

Private key to WIF compressed(压缩)get

This is how we can find the WIF from a private key:it

private_key = '000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f'
decoded_private_key = bitcoin.decode_privkey(private_key, 'hex')
wif = bitcoin.encode_privkey(decoded_private_key, 'wif')
# 5HpHgWkLaovGWySEFpng1XQ6pdG1TzNWR7SrETvfTRVdKHNXZh8

This  is how to get the WIF compressed :form

private_key = '000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f'
compressed_private_key = private_key + '01'
wifcomp1 = bitcoin.encode_privkey(bitcoin.decode_privkey(private_key, 'hex'), \
             'wif_compressed')
# KwDidQJHSE67VJ6MWRvbBKAxhD3F48DvqRT6JRqrjd7MHLBjGF7Vor

关于如何将私钥转成WIF格式看:http://www.javashuo.com/article/p-nriynzcr-eb.htmlclass

Same key,different formats. import

公钥格式

公钥也能够多种格式,分为压缩格式和非压缩格式

前面获得公钥是在椭圆曲线上的一个点,由一对坐标(x,y)组成。公钥一般表示为前缀04紧接着两个256比特的数字。其中一个256比特数字是公钥的x坐标,另外一个256比特数字是y坐标。前缀0是用来区分非压缩格式公钥压缩格式公钥是以02或者03开头。

下面是由前文中的私钥所生成的公钥,其坐标x和y以下:

x=F028892BAD7ED57D2FB57BF33081D5CFCF6F9ED3D3D7F159C2E2FFF579DC341A
y=07CF33DA18BD734C600B96A72BBC4749D5141C90EC8AC328AE52DDFE2E505BDB

下面是一样的公钥以520比特的数字(130个十六进制数字)来表达。这个520比特的数字之前缀04开头,紧接着是x及y坐标,组成格式为04xy:

K= 04F028892BAD7ED57D2FB57BF33081D5CFCF6F9ED3D3D7F159C2E2FFF579DC341A07CF33DA18BD734C600B96A72BBC4749D5141C90EC8AC328AE52DDFE2E505BDB