请教: 助记词为什么是12个字符呢?

我们在创建钱包的时候,需要记住助记词,为什么助记词是12个字符呢?为啥不是16,18或者更多的字符呢?

1赞

你说的这些好像都有,但我选择12个单词的助记词。

1赞

im里面是不能选择助记词数量的吧,只能是12个,这个数量是咋定的呢?是不是12个助记词几乎就不可能被破解了?

1赞

不是字符是单词:joy:助记词一般由12、15、18、21个单词构成,常用的是12个单词。有一个单词库,按照一定的算法调取,所以安全性方面应该不是问题。

1赞

写错了,是单词:joy:,明白了明白了,多谢:+1:

1赞

简单明了,还有12位英文组合,就够复杂的

1赞

助记词在BIP39中有详细的介绍(https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki)其生成助记词的目的是为了方便用户记住自己的钱包。 目前imToken生成的助记词为12个单词,语言为english, 但实际上官方标准支持12/15/18/21/24个单词的个数,并且支持多种语言(如:中文, 日文等)。这些单词都来自于一个单词库, 共 2048 个单词, 这些单词简短、易记, 但用户需要按照生成时的顺序输入才会得到正确的钱包地址。
助记词的编码熵值长度 ( ENT ) 一定要是 32 的倍数,目前我们允许 ENT 值的范围是 128 - 256 bits。 如果传入 ENT 为128 的话, 首先随机生 成 seed( 32 bits ), 将生成的 seed( Data类型) 做一个SHA256操作, 取 hash 值第一位获得 checksum (4 bits) , 再将checksum 拼接到熵(128 bits)之后, 这时整个 seedBits 的长度为132个 bits, 最后将 seedBits 分成11组, 每一组编码对应 0 ~ 2047 中的一个数值 (这也是 wordlist 的单词数) 。(参考: https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki#generating-the-mnemonic)
从某种意义上来讲, 前 11 个词决定了最后一个词是什么词, 换句话说, 最后一个词作为校验词, 决定了这12个助记词是否是有效的, 例如: abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about 这种助记词形式也是有效助记词, 虽然前11个单词一致, 但是由于最后一个单词为有效校验位, 所以该助记词成立。
generateMnemonicString: language: 需要传进两个参数,第一个参数为NSNumber类型, 如果传入@128 则生成的助记词个数为12个(其计算原理参照CoreBitCoin中的BTCMnemonic.m #309)

ENT CS (ENT + CS) / 11 MS
128 128/32 (128+(128/32))/11 12
160 160/32 (160+(160/32))/11 15
192 192/32 (192+(192/32))/11 18
224 224/32 (224+(224/32))/11 21
256 256/32 (256+(256/32))/11 24

以上是本人在从事 iOS 开发时候的经验,当时用的是 OC 语言,不对之处,还望指正!

3赞

有24个的。还有中文助记词的

本主题在最后一个回复创建后60分钟后自动锁定。不再允许添加新回复。