作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我喜欢通过 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/
我是一名优秀的程序员,十分优秀!