java助记词反向_GitHub - gangan1345/mnemonic-sdk: Mnemonic bip39 bip32 bip44 生成助记词 私钥...
mnemonic-sdk
Mnemonic bip39 bip32 bip44
支持 BIP39 助記詞
支持 BIP32 子私鑰
支持 BIP44 多幣種管理
Install
Gradle:
Add dependency:
dependencies {
implementation 'com.lgann.develop:mnemonic-sdk:1.0.0'
}
Maven:
com.lgann.develop
mnemonic-sdk
1.0.0
pom
Usage
生成助記詞
// 默認(rèn)生成12個(gè)單詞的助記詞
String mnemonic = MnemonicUtils.generateMnemonic();
System.out.println("mnemonic = " + mnemonic);
助記詞:exchange throw faculty fiction require father prefer mask organ crumble journey cricket
生成種子
// 根據(jù)助記詞生成種子
byte[] seed = MnemonicUtils.generateSeed(mnemonic, "");
System.out.println("seed = " + Numeric.toHexString(seed));
種子: 0x7eaedb7137ef3c3b9da8c2bd976d639455133ef76be73fda9c8342c922c98ca910fe195a5db88c43fa526b3504569f6aa7476d738a6e11f8feb48aa03ae0eac0
生成一個(gè)bip32 私鑰
byte[] privateKeyBytes = KeyPairUtils.generatePrivateKey(seed, KeyPairUtils.CoinTypes.EOS);
System.out.println("privateKeyBytes:"+ Numeric.toHexString(privateKeyBytes));
私鑰:0x05b04396cf928446dd14be3d58cad3f64ff7b61730462e14a0722caaaf6a1d49
generatePrivateKey具體實(shí)現(xiàn)如下
說明:生成的助記詞 通過bip32 bip44 轉(zhuǎn)換生成的私鑰 可以讓同一個(gè) seed 可以支援多幣種、多帳戶等
// "m/44'/60'/0'/0/0"
// 1. we just need eth wallet for now
AddressIndex addressIndex = BIP44
.m()
.purpose44()
.coinType(coinType)
.account(0)
.external()
.address(0);
// 2. calculate seed from mnemonics , then get master/root key ;
// Note that the bip39 passphrase we set "" for common
ExtendedPrivateKey rootKey = ExtendedPrivateKey.fromSeed(seed, network);
// 3. get child private key deriving from master/root key
ExtendedPrivateKey childPrivateKey = rootKey.derive(addressIndex, AddressIndex.DERIVATION);
// 4. get key pair
byte[] privateKeyBytes = childPrivateKey.getKey();
如果是ETH錢包開發(fā)的話導(dǎo)入了web3j的庫(kù) ,可使用ECKeyPair 生成私鑰和公鑰。
ETH、EOS等賬戶體系會(huì)有所不同,生成私鑰和公鑰有所區(qū)別
// 生成私鑰和公鑰
ECKeyPair keyPair = ECKeyPair.create(privateKeyBytes);
說明
BIP32:定義 Hierarchical Deterministic wallet (簡(jiǎn)稱 “HD Wallet”),是一個(gè)系統(tǒng)可以從單一個(gè) seed 產(chǎn)生一樹狀結(jié)構(gòu)儲(chǔ)存多組 keypairs(私鑰和公鑰)。好處是可以方便的備份、轉(zhuǎn)移到其他相容裝置(因?yàn)槎贾恍枰?seed),以及分層的權(quán)限控制等。
BIP39:將 seed 用方便記憶和書寫的單字表示。一般由 12 個(gè)單字組成,稱為 mnemonic code(phrase),中文稱為助記詞或助記碼。
BIP44:基于 BIP32 的系統(tǒng),賦予樹狀結(jié)構(gòu)中的各層特殊的意義。讓同一個(gè) seed 可以支援多幣種、多帳戶等。各層定義如下:
m / purpose' / coin_type' / account' / change / address_index
//purporse': 固定值44', 代表是BIP44
//coin_type': 這個(gè)代表的是幣種, 可以兼容很多種幣, 比如BTC是0', ETH是60'
//btc一般是 m/44'/0'/0'/0
//eth一般是 m/44'/60'/0'/0
總結(jié)
以上是生活随笔為你收集整理的java助记词反向_GitHub - gangan1345/mnemonic-sdk: Mnemonic bip39 bip32 bip44 生成助记词 私钥...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tendermint源码解析
- 下一篇: 银河麒麟(linux arm64)安装新