观前提示:
©版权所有:本教程由先圣编写,如需转载,请标明出处。
本文受众:Web3从业人员、程序员
浏览推荐:为了最佳观感,本文地址为:https://blog.120.show/2023/5
正文开始:
准备环境:
Java-JDK 1.8以上版本(建议IDEA集成)
Maven(建议IDEA集成)
IDEA编辑器(也可以使用VScode或其他编辑器)
创建Maven项目:
本文使用IDEA版本为2022版,如有界面差异,请选择对应的版本。
打开IDEA、新建空项目、选择Maven+JDK1.8以上、创建。
添加Web3j依赖库:
在pom.xml文件中,添加以下依赖:
1 2 3 4 5 6 7 8
| <dependencies> <dependency> <groupId>org.web3j</groupId> <artifactId>core</artifactId> <version>5.0.0</version> </dependency> </dependencies>
|
复制主要代码:
创建一个名为GenerateEtherWallet的Java类,然后复制下面代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| import java.math.BigInteger; import java.security.*; import org.web3j.crypto.*; import org.web3j.utils.Numeric;
public class GenerateEtherWallet { public static void main(String[] args) throws Exception { SecureRandom secureRandom = new SecureRandom(); byte[] privateKeyBytes = new byte[32]; secureRandom.nextBytes(privateKeyBytes); String privateKey = Numeric.toHexStringNoPrefix(privateKeyBytes);
ECKeyPair keyPair = ECKeyPair.create(new BigInteger(privateKey, 16)); String publicKey = keyPair.getPublicKey().toString(16); String address = Keys.getAddress(keyPair.getPublicKey());
System.out.println("私钥:" + privateKey); System.out.println("公钥:" + publicKey); System.out.println("地址:" + address); } }
|
运行项目:
按F10+Shift 或者 点击绿色三角形 开始运行项目。
控制台正常应该显示:
私钥:dce017abd29d8ba884794e72157718a90e2f72af1f6cc6329b8333e49e874f25
公钥:a583e78eb4aa39f1a7581e8febc9401aa2e66bc40d10e26f7cfc0af0e14dfedb80b57eed8180f485d0504a5ae796ee2d973831ecbbdaf0ca860d9951b1858e1c
地址:17a04150123b23cfb2c21b599e68d2a0d35dbf6b
修改代码:
如果需要生成多个钱包,加入循环即可。如果不懂代码,可以简单复制下面的代码(for循环):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| import java.math.BigInteger; import java.security.*; import org.web3j.crypto.*; import org.web3j.utils.Numeric;
public class GenerateEtherWallet { public static void main(String[] args) throws Exception { for (int i = 0; i < 10; i++) { System.out.println("第" + (i+1) + "个钱包:"); GenerateEtherWallet.newWallet(); } }
public static void newWallet(){ SecureRandom secureRandom = new SecureRandom(); byte[] privateKeyBytes = new byte[32]; secureRandom.nextBytes(privateKeyBytes); String privateKey = Numeric.toHexStringNoPrefix(privateKeyBytes);
ECKeyPair keyPair = ECKeyPair.create(new BigInteger(privateKey, 16)); String publicKey = keyPair.getPublicKey().toString(16); String address = Keys.getAddress(keyPair.getPublicKey());
System.out.println("私钥:" + privateKey); System.out.println("公钥:" + publicKey); System.out.println("地址:" + address); } }
|
具体看//后面的注释内容,i<10表示将运行10次方法,即生成10个钱包。
如果你需要10000个钱包,改成i<10000即可。
参考资料:
AI-ChatGPT问答
以太坊-面向Java开发者的以太坊资源