BIP-39助记词词数怎么来的? 图 1
BIP-39助记词词数怎么来的? · 图 1

BIP-39助记词的词数不是钱包随意决定的。它把固定长度的随机熵加上一小段校验和,再每11位映射到2048词表中的一个词。这个公式同时解释了为什么合法词数只有五种常见组合。

从128位熵算出12个词

取128位熵,校验和长度是128 ÷ 32 = 4位。把4位校验和接在熵后得到132位,再按每11位切分:132 ÷ 11 = 12,所以得到12个词。

同理:

熵长度ENT校验和ENT/32总位数词数
128413212
160516515
192619818
224723121
256826424

校验和来自熵的SHA-256摘要前若干位。它能发现多数抄写错误,却不是密码学身份认证;一组词通过校验,只说明格式自洽,不说明它就是你原来的钱包。

2048词表为何对应11位

2的11次方等于2048,因此每个11位索引恰好指向一个词。词的顺序不可交换,重复词也可能合法。恢复工具应先按规范词表把词还原为索引,再验证校验和;不要通过自动替换相似单词“修复”备份后直接导入高价值钱包。

passphrase会生成另一套完全有效的钱包

BIP-39使用PBKDF2,把助记词作为密码、字符串mnemonic加用户passphrase作为salt的一部分,派生512位seed。passphrase不是对助记词的简单解锁码:输入任何不同字符,包括空格、大小写或Unicode差异,都会得到另一颗种子,并可能展示一套余额为零但格式完全正常的钱包。

这带来“合理否认”能力,也带来备份风险。只备份24个词却忘记passphrase,无法从校验和推回口令;把口令和助记词放在同一明文位置,又失去隔离价值。

seed之后还有派生路径

BIP-39只得到seed,地址还要经过BIP-32等HD派生。相同助记词和passphrase,选择不同脚本类型、coin type、account或路径,仍会看到不同地址。恢复失败应按“词表与校验和 → passphrase → 钱包标准 → 派生路径 → 账户扫描”逐层排查,不要立即认定资产丢失。

从熵到词数的精确关系

BIP-39允许128、160、192、224或256位熵,校验和长度CS等于ENT÷32;把熵和校验和拼接后每11位映射一个词表索引,因此词数分别是12、15、18、21或24。校验和来自SHA-256(熵)的前CS位,它能发现部分抄写错误,但不是防攻击的认证码。

助记词转种子时,助记词句子作为PBKDF2的password,字符串“mnemonic”加可选passphrase作为salt,文本先做UTF-8 NFKD规范化,伪随机函数为HMAC-SHA512,迭代2048次,输出512位种子。任何passphrase都会得到一套有效钱包,因此输错时通常不会提示错误,而是打开另一组地址。

助记词绝不应输入网页、客服聊天或截图工具。先在离线或硬件钱包环境做只读恢复,确认首批地址与历史记录一致,再进行签名。HD树与硬化路径可参考BIP32硬化派生,比特币脚本路径见Taproot花费路径,签署交易前结合PSBT核对清单