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);<

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
涉及内容:注意,学习此视频必须有一定基础的同学区块链相关知识、钱包相关知识、p2p相关知识、uniapp相关知识    01前言    02成果展示    03前言区块链概念和六层模型介绍    04翻译一个带币的js简单例子原理介绍    05区块链springboot工程搭建和区块相关实现    06区块链中加密算法相关介绍以及实现    07钱包相关实体类介绍    08redis数据库等配置和工具类的介绍    09区块链相关实体类介绍    10挖矿相关实体类和POW相关的介绍    11 p2p 点对点 server和client代码    12 p2p 原理的简单介绍    13 节点钱包相关启动实现    14 web控制层逻辑基础代码    15 web功能的整体介绍    16 web钱包功能-创建钱包账户的完整功能实现    17 web钱包功能-获取挖矿钱包信息和根据钱包地址获取信息    18 web钱包功能-获取当前节点所有钱包    19 全节点钱包钱包中心化钱包的概念    20 p2p三个节点的相关配置并启动    21 p2p 节点添加相关流程    22 p2p 节点列表相关实现    23 区块相关挖矿与挖矿奖励等讲解    24 区块链相关的查询操作    25 交易转账相关逻辑    26 三台机器节点运行 uniapp开发前准备    27 uniapp首页和我的页面实现    28 uniapp 节点钱包和节点钱包列表展示    29 uniapp添加节点,节点列表挖矿区块链查询等    30 uniapp我的钱包转账查询交易等    31 课程总结以及代码资料等相关说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值