Я создаю приложение для Android, где пользователи могут входить в систему, используя свою учетную запись Ethereum, и совершать транзакции. Пока что пользователь может войти с помощью своего закрытого ключа. Я хочу добавить возможность использования 12 мнемонических слов для входа в систему.
Я могу сгенерировать начальное число (мнемонический + фраза-пароль), используя MnemonicUtils: https://github.com/web3j/web3j/blob/master/crypto/src/main/java/org/web3j/crypto/MnemonicUtils.java. Но как я могу сгенерировать закрытый ключ учетной записи из этого начального числа?
Я уже пытался использовать приведенный ниже код, но он каждый раз генерирует отдельный закрытый ключ для одной и той же мнемоники.
String mnemonic="" //I put here my own mnemonic
ECKeyPair exKey= null;
try {
exKey = Keys.createEcKeyPair();
} catch (InvalidAlgorithmParameterException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchProviderException e) {
e.printStackTrace();
}
WalletFile wallet=null;
try {
wallet = Wallet.createLight(mnemonic,exKey);
} catch (CipherException e) {
e.printStackTrace();
}
Credentials credentials = null;
try {
credentials = Credentials.create(Wallet.decrypt(mnemonic,wallet));
} catch (CipherException e) {
e.printStackTrace();
}
String privateKeyGenerated = credentials.getEcKeyPair().getPrivateKey().toString(16);
Log.d("PK", privateKeyGenerated);