본문으로 건너뛰기
This page uses machine translation from English, which may contain errors or unclear language. For the most accurate information, please see the original English version. Some content may be in the original English due to frequent updates. Help us improve this page's translation by joining our effort on Crowdin. (Crowdin translation page, Contributing guide)

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.java
Load KaiaCredentials from keystore file: /RoleBased_V4.json
Array 1:
KaiaCredential : Address: 0x5bd2fb3c21564c023a4a735935a2b7a238c4ccea, Private Key: 0xc9668ccd35fc20587aa37a48838b48ccc13cf14dd74c8999dd6a480212d5f7ac
Array 2:
KaiaCredential : Address: 0x5bd2fb3c21564c023a4a735935a2b7a238c4ccea, Private Key: 0x9ba8cb8f60044058a9e6f815c5c42d3a216f47044c61a1750b6d29ddc7f34bda
Array 3:
KaiaCredential : Address: 0x5bd2fb3c21564c023a4a735935a2b7a238c4ccea, Private Key: 0xe4ca6d38096ad99324de0dde108587e5d7c600165ae4cd6c2462c597458c2b8
Load KaiaCredentials from keystore file: /Multi_V4.json
Array 1:
KaiaCredential : Address: 0x82c6a8d94993d49cfd0c1d30f0f8caa65782cc7e, Private Key: 0xa32c30608667d43be2d652bede413f12a649dd1be93440878e7f712d51a6768a
KaiaCredential : Address: 0x82c6a8d94993d49cfd0c1d30f0f8caa65782cc7e, Private Key: 0xe4ca6d38096ad99324de0dde108587e5d7c600165ae4cd6c2462c597458c2b8
KaiaCredential : Address: 0x82c6a8d94993d49cfd0c1d30f0f8caa65782cc7e, Private Key: 0xc9668ccd35fc20587aa37a48838b48ccc13cf14dd74c8999dd6a480212d5f7ac
Load KaiaCredentials from keystore file: /Public_V4.json
Array 1:
KaiaCredential : Address: 0xa2a8854b1802d8cd5de631e690817c253d6a9153, Private Key: 0xe4ca6d38096ad99324de0dde108587e5d7c600165ae4cd6c2462c597458c2b8

페이지를 개선해 주세요