可以通过:
web3j包的api生成json文件,并且生成私钥 公钥:
String walletFileName = "";
EthResult ethResult = new EthResult();
String password = getPassword.RandomPassword9();
getFileDir(CAPITAL_UPLOAD_FILES_DIR);
try {
ECKeyPair ecKeyPair = Keys.createEcKeyPair();//创建钥匙对
BigInteger privateInDec = ecKeyPair.getPrivateKey();//获取私钥
String privateKey = privateInDec.toString(16);//获取16进制的私钥
WalletFile awallet = Wallet.createLight(password,ecKeyPair);//创建钱包
String address = awallet.getAddress();//获取地址
if(address.startsWith("0x")){
address = address.substring(2).toLowerCase();
}else {
address = address.toLowerCase();
}
address = "0x" + address;
ethResult.setAddress(address);
ethResult.setPrivateKey(privateKey);
ethResult.setPassword(Base64Utils.getBase64(Base64Utils.getBase64(password)));
walletFileName = WalletUtils.generateNewWalletFile(password, new File(CAPITAL_UPLOAD_FILES_DIR), false);
ethResult.setWalletPath(walletFileName);
ethRPCApiUtils.improtPrivateKey(privateKey, password);//注意 同时需要把生成的钱包导入到你的geth客户端,通过rpc调用personal_importRawKey这个Api,参数见名知意
ethRPCApiUtils.unlock(address, password);//同时还要通过personal_unlockAccount这个api解锁账户,否则geth将会一堆警告,时间要设好。我写的null,主要看你们
} catch (Exception e) {
log.error("newAccount error");
throw new RuntimeException("new Account error " + e.getMessage());
}
return ethResult;
创建的时候特别谨记要导入私钥以及解锁账户!!!