简介
这是一个Bip44确定性算法的Android实现库,可以生成12个助记词,seed种子和根据path路径生成路径的私钥.
对Bip44确定算法不了解的可以看我之前的一篇文章:
https://52it.party/2018/07/30/%E5%8C%BA%E5%9D%97%E9%93%BE%E5%BC%80%E5%8F%91%E4%B9%8B%E7%A1%AE%E5%AE%9A%E6%80%A7%E7%AE%97%E6%B3%95bip32%EF%BC%8Cbip39%EF%BC%8Cbip44/
项目地址:https://github.com/wypeng2012/Bip44ForAndroid
欢迎star
support Android sdk >= 14
- 如何使用
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| List<String> words = Bip44Utils.generateMnemonicWords(MainActivity.this); Log.e("TAG", "words: " + words.toString());
byte[] seed = Bip44Utils.getSeed(words); Log.e("TAG", "seed: " + new BigInteger(1,seed).toString(16));
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));
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();
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);
|
打印结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 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
1 2 3 4 5 6
| <dependency> <groupId>party.loveit</groupId> <artifactId>bip44forandroidlibrary</artifactId> <version>1.0.7</version> <type>pom</type> </dependency>
|
- Gradle
1 2 3 4 5
| compile 'party.loveit:bip44forandroidlibrary:1.0.7'
or
implementation 'party.loveit:bip44forandroidlibrary:1.0.7'
|
- Ivy
1 2 3
| <dependency org='party.loveit' name='bip44forandroidlibrary' rev='1.0.7'> <artifact name='bip44forandroidlibrary' ext='pom' ></artifact> </dependency>
|