Bip44確定性演算法的android實現
阿新 • • 發佈:2018-12-13
簡介
這是一個Bip44確定性演算法的Android實現庫,可以生成12個助記詞,seed種子和根據path路徑生成路徑的私鑰.
對Bip44確定演算法不瞭解的可以看我之前的一篇文章:
區塊鏈開發之確定性演算法bip32,bip39,bip44
專案地址:https://github.com/wypeng2012/Bip44ForAndroid
歡迎star
support Android sdk >= 14
PS:- coin_type link
https://github.com/satoshilabs/slips/blob/master/slip-0044.md
- 如何使用
程式碼如下:
//get 12 words
List<String> words = Bip44Utils.generateMnemonicWords(MainActivity.this);
Log.e("TAG", "words: " + words.toString());
// get bip39 seed
byte[] seed = Bip44Utils. getSeed(words);
Log.e("TAG", "seed: " + new BigInteger(1,seed).toString(16));
//get PrivateKey by path
BigInteger pri1 = Bip44Utils.getPathPrivateKey(words,"m/44'/194'/0'/0/0");
Log.e("TAG", "pri1: " + pri1.toString(16));
BigInteger pri2 = Bip44Utils.getPathPrivateKey(words,seed,"m/44'/194'/0'/0/0");
Log.e("TAG", "pri2: " + pri2.toString(16));
byte[] pri3 = Bip44Utils.getPathPrivateKeyBytes(words, "m/44'/194'/0'/0/0");
Log.e("TAG", "pri3: " + new BigInteger(1,pri3).toString(16));
byte[] pri4 = Bip44Utils.getPathPrivateKeyBytes(words, seed,"m/44'/194'/0'/0/0");
Log.e("TAG", "pri4: " + new BigInteger(1,pri4).toString(16));
byte[] pri5 = Bip44Utils.getDefaultPathPrivateKeyBytes(words, 194);
Log.e("TAG", "pri5: " + new BigInteger(1,pri5).toString(16));
//if you use bitcoinj library,you can generate bitcoin privatekey and public key and address like this:
BigInteger pribtc = Bip44Utils.getPathPrivateKey(words,"m/44'/0'/0'/0/0");
ECKey ecKey = ECKey.fromPrivate(pribtc);
String publicKey = ecKey.getPublicKeyAsHex();
String privateKey = ecKey.getPrivateKeyEncoded(networkParameters).toString();
String address = ecKey.toAddress(networkParameters).toString();
//if you use web3j library,you can generate bitcoin privatekey and public key and address like this:
BigInteger prieth = Bip44Utils.getPathPrivateKey(words,"m/44'/60'/0'/0/0");
ECKeyPair ecKeyPair = ECKeyPair.create(prieth);
String publicKey = Numeric.toHexStringWithPrefix(ecKeyPair.getPublicKey());
String privateKey = Numeric.toHexStringWithPrefix(ecKeyPair.getPrivateKey());
String address = "0x" + Keys.getAddress(ecKeyPair);
列印結果:
words: [course, question, calm, west, basket, kitten, salmon, absorb, tool, ankle, mixed, endorse]
seed: c03f5488370482658066b96a803fcceac46b68181024a545d814344cbf7d9da9b478a20d0b95ebef268b7c24afd4540c59a4567146d45d2db891ca2576d409c7
pri1: 6ef7a396546d4fcf26865e54033ad48db858d19b5a08782014a652f4b5469037
pri2: 6ef7a396546d4fcf26865e54033ad48db858d19b5a08782014a652f4b5469037
pri3: 6ef7a396546d4fcf26865e54033ad48db858d19b5a08782014a652f4b5469037
pri4: 6ef7a396546d4fcf26865e54033ad48db858d19b5a08782014a652f4b5469037
pri5: 6ef7a396546d4fcf26865e54033ad48db858d19b5a08782014a652f4b5469037
- 如何遠端依賴
- Maven
<dependency>
<groupId>party.loveit</groupId>
<artifactId>bip44forandroidlibrary</artifactId>
<version>1.0.7</version>
<type>pom</type>
</dependency>
- Gradle
compile 'party.loveit:bip44forandroidlibrary:1.0.7'
or
implementation 'party.loveit:bip44forandroidlibrary:1.0.7'
- Ivy
<dependency org='party.loveit' name='bip44forandroidlibrary' rev='1.0.7'>
<artifact name='bip44forandroidlibrary' ext='pom' ></artifact>
</dependency>