私钥格式

私钥可以用多种不同格式表示,所有这些格式都对应于相同的256位数。表4-4显示了用于表示私钥的几种常见格式。不同的格式在不同的情况下使用。十六进制和原始二进制格式在软件内部使用,很少显示给用户。WIF用于钱包之间的密钥导入/导出,并经常用于私钥的QR码(条形码)表示。

私钥格式的现代相关性

早期的比特币钱包软件在初始化新用户钱包时生成一个或多个独立的私钥。当初始密钥集已全部使用完毕时,钱包可能会生成额外的私钥。单个私钥可以导出或导入。每当生成新的私钥或导入私钥时,都需要创建钱包的新备份。

后来的比特币钱包开始使用确定性钱包,其中所有私钥都是从单个种子值生成的。这些钱包只需要在典型的链上使用中备份一次。但是,如果用户从其中一个这些钱包中导出一个单独的私钥,而攻击者获得了该密钥以及钱包的一些非私密数据,他们可能会推导出钱包中的任何私钥,从而允许攻击者窃取所有的钱包资金。此外,无法将密钥导入确定性钱包。这意味着几乎没有现代钱包支持导出或导入单个密钥的功能。本节中的信息主要是对需要与早期比特币钱包兼容的人感兴趣。

有关更多信息,请参阅“分层确定性(HD)密钥生成(BIP32)”。

表 4-4. 不同类型私钥(编码格式)

类型前缀描述

Hex

None

64位十六进制字符

WIF

5

Base58check 编码: 具有版本前缀 128 和 32 位校验和的 base58。

WIF-compressed

K 或 L

与上述相同,但在编码之前添加了后缀 0x01。

表4-5 展示了以几种不同格式生成的私钥。

表4-5。示例:相同的密钥,不同的格式

格式私钥

Hex

1e99423a4ed27608a15a2616a2b0e9e52ced330ac530edcc32c8ffc6a526aedd

WIF

5J3mBbAH58CpQ3Y5RNJpUKPE62SQ5tfcvU2JpbnkeyhfsYB1Jcn

WIF-compressed

KxFC1jmwwCoACiCAWZ3eXa96mBM6tb3TYzGmf6YwgdGWZgawvrtJ

所有这些表示法都是展示相同数字、相同私钥的不同方式。它们看起来不同,但任何一个格式都可以轻松转换为任何其他格式。

Last updated