区块链钱包之生成助记词

Posted 陳英傑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链钱包之生成助记词相关的知识,希望对你有一定的参考价值。

(一)区块链钱包之生成助记词
(二)区块链钱包之创建钱包地址
(三)区块链钱包之加密算法简介
(四)区块链钱包之创建比特离线交易(BTC交易)
(五)区块链钱包之创建以太坊交易(ETH交易)

  1. 助记词

明文私钥的另一种表现形式,最早是由 BIP39 提案提出,其目的是为了帮助用户记忆复杂的私钥 ( 64 位的哈希值)。助记词一般由12、15、18、21个单词构成,这些单词都取自一个固定词库(2048个),其生成顺序也是按照一定算法而来,所以用户没必要担心随便输入 12 个单词就会生成一个地址。

  1. 生成过程

生成一个128位随机数,再加上对随机数做的校验4位,得到132位的一个数,然后按每11位做切分,这样就有了12个二进制数,然后用每个数去查BIP39定义的单词表,这样就得到12个助记词(当然不一定都是12位)。

  1. 上代码

导入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助记词个数
1612
2015
2418
2821
3225

注意:生成的助记词中可能有重复的,所有为了安全最好去重。

希望我的分享能帮助到大家
在这里插入图片描述

以上是关于区块链钱包之生成助记词的主要内容,如果未能解决你的问题,请参考以下文章

区块链钱包之生成助记词

[币严BIZZAN区块链]Java生成ETH钱包助记词私钥地址

区块链钱包之创建钱包地址

区块链钱包之创建钱包地址

区块链钱包之加密算法简介

区块链钱包之加密算法简介