(一)区块链钱包之生成助记词

(一)区块链钱包之生成助记词
(二)区块链钱包之创建钱包地址
(三)区块链钱包之加密算法简介
(四)区块链钱包之创建比特离线交易(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 {
     
      MnemonicCode mnemonicCode = new MnemonicCode();
      SecureRandom random = new SecureRandom();
      byte[] entropy = new byte[16];
      random.nextBytes(entropy);
      List<String> strings = mnemonicCode.toMnemonic(entropy);
      HashSet<String> hashSet = new HashSet<>(strings);
      if (hashSet.size() != strings.size()) {
     
        getMnemonicKeyWords();
      }
      return strings;
    } catch (Exception e) {
     
      e.printStackTrace();
    }
    return null;
  }

byte数组length必须是4的倍数,它决定助记词个数

byte lenth 助记词个数
16 12
20 15
24 18
28 21
32 25

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

希望我的分享能帮助到大家
(一)区块链钱包之生成助记词_第1张图片

你可能感兴趣的:(java,区块链技术,Android,区块链,java,Android)