1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > (一)区块链钱包之生成助记词

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

时间:2023-05-02 10:43:31

相关推荐

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

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

(二)区块链钱包之创建钱包地址

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

(四)区块链钱包之创建比特离线交易(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的倍数,它决定助记词个数

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

希望我的分享能帮助到大家

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。