我正在查看xrpl4j的java编码示例。
他们都创建新的帐户,以演示传输,帐户信息检索等.
这是通过首先生成随机种子然后导出密钥对来完成的,例如:
Seed sd = Seed.ed25519Seed();
KeyPair coldWalletKeyPair = sd.deriveKeyPair();
然后,您可以使用coldWalletKeyPair.privateKey()
获取私钥
我试图在后端持久化生成的私钥以备将来的交易,但没有看到任何方法可以做到这一点。
在服务器(生成私钥的服务器)上持久化生成的私钥的正确方法是什么?
我已经尝试序列化私钥,但得到一个不可序列化的错误,并且在控制台中打印私钥(当然)显示它是编辑的。我还查看了xrpl 4j代码,以了解在试图提取私钥的过程中发生了什么,但没有找到方法。
下面是我正在做的尝试序列化私钥(我省略了异常处理代码):
public byte[] serializeKeyPair(PrivateKey key) throws Exception {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream os = new ObjectOutputStream(bos);
os.writeObject(key);
byte[] res = bos.toByteArray();
os.close();
bos.close();
return res;
}
Seed sd = Seed.ed25519Seed();
KeyPair coldWalletKeyPair = sd.deriveKeyPair();
byte barr[];
barr = serializeKeyPair(coldWalletKeyPair.privateKey());
下面是错误消息:
java.io.NotSerializableException: org.xrpl.xrpl4j.crypto.keys.PrivateKey
at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1185)
at java.base/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:349)
更新:
看看xrpl 4j. crypto. keys,除了@PeterMmm使用Kryo的解决方案外,我还找到了另一种方法:
Seed sd = Seed.ed25519Seed();
KeyPair coldWalletKeyPair = sd.deriveKeyPair();
UnsignedByteArray unsignedByteArr = coldWalletKeyPair.privateKey().value();
byte writeByteArr[] = unsignedByteArr.toByteArray();
FileTools.writeBytesToFile(writeByteArr, "file.bin");
byte readByteArr[] = FileTools.readFileToBytes("file.bin");
PrivateKey privateKey = PrivateKey.of(UnsignedByteArray.of(byteArr));
1条答案
按热度按时间dsf9zpds1#
也许使用kyro(我不测试读取的私钥是否可用)