Java钱包_Web3j钱包 -- java版本

基于Web3j的钱包工具类,包括普通钱包的生成和加载,bip39钱包的生成和加载,bip39钱包签名和验证。

相关依赖

org.web3j

core

4.2.0

org.projectlombok

lombok

1.18.12

true

com.alibaba

fastjson

1.2.31

com.fasterxml.jackson.core

jackson-core

2.10.3

org.apache.commons

commons-lang3

3.3.9

org.junit.jupiter

junit-jupiter

5.5.2

安全随机数

import org.web3j.crypto.LinuxSecureRandom;

import java.security.SecureRandom;

/**

* @author ming

* @version 1.0.0

* @date 2020/9/23 16:05

**/

public class SecureRandomUtils {

private static final SecureRandom SECURE_RANDOM;

private static int isAndroid;

public static SecureRandom secureRandom() {

return SECURE_RANDOM;

}

private static boolean isAndroidRuntime() {

if (isAndroid == -1) {

String runtime = System.getProperty("java.runtime.name");

isAndroid = runtime != null && "Android Runtime".equals(runtime) ? 1 : 0;

}

return isAndroid == 1;

}

private SecureRandomUtils() {

}

static {

if (isAndroidRuntime()) {

new LinuxSecureRandom();

}

SECURE_RANDOM = new SecureRandom();

isAndroid = -1;

}

}

钱包工具

import com.alibaba.fastjson.JSON;

import com.alibaba.fastjson.JSONObject;

import com.fasterxml.jackson.core.JsonProcessingException;

import com.fasterxml.jackson.databind.DeserializationFeature;

import com.fasterxml.jackson.databind.ObjectMapper;

import com.fasterxml.jackson.databind.SerializationFeature;

import com.tld.admin.common.utils.SecureRandomUtils;

import lombok.Data;

import lombok.experimental.Accessors;

import org.apache.commons.lang3.ObjectUtils;

import org.apache.commons.lang3.StringUtils;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.web3j.crypto.*;

import org.web3j.utils.Numeric;

import java.io.File;

import java.io.IOException;

import java.math.BigInteger;

import java.security.InvalidAlgorithmParameterException;

import java.security.NoSuchAlgorithmException;

import java.security.NoSuchProviderException;

import java.security.SecureRandom;

import java.util.Random;

/**

* 基于web3j的钱包工具类

*

* @author ming

* @version 1.0.0

* @date 2020/9/21 10:30

**/

public class Web3jWalletUtils {

private Logger log = LoggerFactory.getLogger(this.getClass());

private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();

private static final SecureRandom SECURE_RANDOM = SecureRandomUtils.secureRandom();

static {

// 转换为格式化的json

OBJECT_MAPPER.enable(SerializationFeature.INDENT_OUTPUT);

// 如果json中有新增的字段并且是实体类类中不存在的,不报错

OBJECT_MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

}

public Web3jWalletUtils() {

}

/**

* 创建普通钱包

*

* @param password 钱包密码

* @param walletFilePath 钱包文件存储路径

* @return CommonWallet

* @throws Exception e

*/

public CommonWallet generateCommonWallet(String password, String walletFilePath) throws Exception {

try {

String walletFileName = WalletUtils.generateNewWalletFile(password, new File(walletFilePath), false);

String path = StringUtils.isNotBlank(walletFilePath) && File.separator.equals(walletFilePath.substring(walletFilePath.length() - 1)) ? walletFilePath + walletFileName : walletFilePath + File.separator + walletFileName;

Credentials credentials = WalletUtils.loadCredentials(password, walletFilePath);

String address = credentials.getAddress();

BigInteger publicKey = credentials.getEcKeyPair().getPublicKey();

BigInteger privateKey = credentials.getEcKeyPair().getPrivateKey();

return new CommonWallet(address, password, privateKey, publicKey, path);<


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部