我们在创建钱包的时候,需要记住助记词,为什么助记词是12个字符呢?为啥不是16,18或者更多的字符呢?
你说的这些好像都有,但我选择12个单词的助记词。
im里面是不能选择助记词数量的吧,只能是12个,这个数量是咋定的呢?是不是12个助记词几乎就不可能被破解了?
不是字符是单词助记词一般由12、15、18、21个单词构成,常用的是12个单词。有一个单词库,按照一定的算法调取,所以安全性方面应该不是问题。
写错了,是单词,明白了明白了,多谢
简单明了,还有12位英文组合,就够复杂的
助记词在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 语言,不对之处,还望指正!
有24个的。还有中文助记词的
本主题在最后一个回复创建后60分钟后自动锁定。不再允许添加新回复。