区块链钱包之生成助记词
Posted 陳英傑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链钱包之生成助记词相关的知识,希望对你有一定的参考价值。
(一)区块链钱包之生成助记词
(二)区块链钱包之创建钱包地址
(三)区块链钱包之加密算法简介
(四)区块链钱包之创建比特离线交易(BTC交易)
(五)区块链钱包之创建以太坊交易(ETH交易)
- 助记词
明文私钥的另一种表现形式,最早是由 BIP39 提案提出,其目的是为了帮助用户记忆复杂的私钥 ( 64 位的哈希值)。助记词一般由12、15、18、21个单词构成,这些单词都取自一个固定词库(2048个),其生成顺序也是按照一定算法而来,所以用户没必要担心随便输入 12 个单词就会生成一个地址。
- 生成过程
生成一个128位随机数,再加上对随机数做的校验4位,得到132位的一个数,然后按每11位做切分,这样就有了12个二进制数,然后用每个数去查BIP39定义的单词表,这样就得到12个助记词(当然不一定都是12位)。
- 上代码
导入Gradle依赖
api group: 'org.bitcoinj', name: 'bitcoinj-core', version: '0.15.10'
public static List<String> getMnemonicKeyWords() {
try {
List<String> strings;
HashSet<String> hashSet = new HashSet<>();
do {
MnemonicCode mnemonicCode = new MnemonicCode();
byte[] bytes = new byte[16];
SecureRandom random = new SecureRandom();
random.nextBytes(bytes);
strings = mnemonicCode.toMnemonic(bytes);
hashSet.clear();
hashSet.addAll(strings);
} while (hashSet.size() != 12);
return strings;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
byte数组length必须是4的倍数,它决定助记词个数
byte lenth | 助记词个数 |
---|---|
16 | 12 |
20 | 15 |
24 | 18 |
28 | 21 |
32 | 25 |
注意:生成的助记词中可能有重复的,所有为了安全最好去重。
希望我的分享能帮助到大家
以上是关于区块链钱包之生成助记词的主要内容,如果未能解决你的问题,请参考以下文章