gpt4 book ai didi

java - JSch:从私钥文件创建公钥

转载 作者:行者123 更新时间:2023-11-30 05:33:36 25 4
gpt4 key购买 nike

我喜欢通过 QR 码(最佳安全实践除外)传输私钥,该私钥是作为 KeyPair 的一部分创建的,并且需要在之后恢复 KeyPair。因此

JSch jsch = new JSch();
KeyPair keypair = KeyPair.genKeyPair(jsch, KeyPair.RSA, 4096);

ByteArrayOutputStream prvstream = new ByteArrayOutputStream();
keypair.writePrivateKey(prvstream);
prvstream.close();

ByteArrayOutputStream pubstream = new ByteArrayOutputStream();
keypair.writePublicKey(pubstream, null /* key comment */);
pubstream.close();

byte[] prv_data = prvstream.toByteArray();
byte[] pub_data = pubstream.toByteArray();

// prv_data is transferred via QR-Code here

KeyPair keypair2 = KeyPair.load(jsch, prv_data, null);

ByteArrayOutputStream prvstream2 = new ByteArrayOutputStream();
keypair2.writePrivateKey(prvstream2);
prvstream2.close();

ByteArrayOutputStream pubstream2 = new ByteArrayOutputStream();
keypair2.writePublicKey(pubstream2, null /* key comment */));
pubstream2.close();

byte[] prv_data2 = prvstream2.toByteArray();
byte[] pub_data2 = pubstream2.toByteArray();

if (pub_data.equals(pub_data2) {
// success
} else {
// we hit failure here every time.
}

最佳答案

pub_data.equals(pub_data2) 不符合您的想法。它比较引用,而不是数组内容。您想要使用Arrays.equals(pub_data, pub_data2)

参见equals vs Arrays.equals in Java .

<小时/>

顺便说一句,从技术上讲,您无法从私钥创建公钥。但由于 KeyPair.writePrivateKey 实际上写入了整个 key 对,而不仅仅是私钥,它自然也包含公钥。

关于java - JSch:从私钥文件创建公钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57058149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com