V4 keystore
This example demonstrates how to encrypt and decrypt keystore V4.
Import necessary classes from the Web3j and kaia libraries(web3j-ext
).
Define the keystore password, this password is used for decrypting the keystores
Read keystores from json files, for example we have a list of different accounts: "RoleBased_V4.json", "Multi_V4.json" and "Public_V4.json"
Decrypte the keystore with its password.
After decryped, you can access the public and private key.
keystoreV4.java
package org.web3j.example.utils;import java.io.InputStream;import java.io.BufferedReader;import java.io.InputStreamReader;import java.nio.charset.StandardCharsets;import java.util.stream.Collectors;import org.web3j.crypto.KaiaWelletUtils;import org.web3j.crypto.KaiaCredentials;import java.io.IOException;import java.util.List;import org.web3j.tx.response.PollingTransactionReceiptProcessor;import org.web3j.tx.response.TransactionReceiptProcessor;import org.web3j.example.keySample;public class DecryptKeystoreV4Example implements keySample { public static void run() throws Exception { String password = "Ilovekaia"; String[] keyFiles = { "/RoleBased_V4.json", "/Multi_V4.json", "/Public_V4.json" }; for (String keyFile : keyFiles) { String json = getResourceJSON(keyFile); // Convert keystore to list of KaiaCredentials List<List<KaiaCredentials>> credentialsLists = KaiaWelletUtils.loadJsonKaiaCredentialsFromV4(password, json); System.out.println("Load KaiaCredentials from keystore file: " + keyFile); // Print KaiaCredentials for (int i = 0; i < credentialsLists.size(); i++) { List<KaiaCredentials> credentialsList = credentialsLists.get(i); System.out.println("Array " + (i + 1) + ":"); for (KaiaCredentials credentials : credentialsList) { String address = credentials.getAddress(); String privateKey = credentials.getEcKeyPair().getPrivateKey().toString(16); System.out .println("\tKaiaCredential : " + "Address: " + address + ", Private Key: 0x" + privateKey); } } } } static String getResourceJSON(String resourcePath) throws IOException { InputStream inputStream = DecryptKeystoreV4Example.class.getResourceAsStream(resourcePath); if (inputStream == null) { throw new IllegalArgumentException("resource not found: " + resourcePath); } try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8))) { // String value for keystore JSON return reader.lines().collect(Collectors.joining(System.lineSeparator())); } catch (IOException e) { throw e; } }}
output
❯ java keystoreV4.javaLoad KaiaCredentials from keystore file: /RoleBased_V4.jsonArray 1: KaiaCredential : Address: 0x5bd2fb3c21564c023a4a735935a2b7a238c4ccea, Private Key: 0xc9668ccd35fc20587aa37a48838b48ccc13cf14dd74c8999dd6a480212d5f7acArray 2: KaiaCredential : Address: 0x5bd2fb3c21564c023a4a735935a2b7a238c4ccea, Private Key: 0x9ba8cb8f60044058a9e6f815c5c42d3a216f47044c61a1750b6d29ddc7f34bdaArray 3: KaiaCredential : Address: 0x5bd2fb3c21564c023a4a735935a2b7a238c4ccea, Private Key: 0xe4ca6d38096ad99324de0dde108587e5d7c600165ae4cd6c2462c597458c2b8Load KaiaCredentials from keystore file: /Multi_V4.jsonArray 1: KaiaCredential : Address: 0x82c6a8d94993d49cfd0c1d30f0f8caa65782cc7e, Private Key: 0xa32c30608667d43be2d652bede413f12a649dd1be93440878e7f712d51a6768a KaiaCredential : Address: 0x82c6a8d94993d49cfd0c1d30f0f8caa65782cc7e, Private Key: 0xe4ca6d38096ad99324de0dde108587e5d7c600165ae4cd6c2462c597458c2b8 KaiaCredential : Address: 0x82c6a8d94993d49cfd0c1d30f0f8caa65782cc7e, Private Key: 0xc9668ccd35fc20587aa37a48838b48ccc13cf14dd74c8999dd6a480212d5f7acLoad KaiaCredentials from keystore file: /Public_V4.jsonArray 1: KaiaCredential : Address: 0xa2a8854b1802d8cd5de631e690817c253d6a9153, Private Key: 0xe4ca6d38096ad99324de0dde108587e5d7c600165ae4cd6c2462c597458c2b8