Khi bạn nhận khóa được mã hóa, giả sử bạn đã sử dụng phương thức "[keyPair] .getPublic(). GetEncoded()" mặc định của bạn, thao tác này sẽ hoạt động.
X509EncodedKeySpec ks = new X509EncodedKeySpec(pubKeyByteString.toByteArray());
KeyFactory kf;
try {
kf = java.security.KeyFactory.getInstance("ECDH");
} catch (NoSuchAlgorithmException e) {
log.error("Cryptography error: could not initialize ECDH keyfactory!", e);
return;
}
ECPublicKey remotePublicKey;
try {
remotePublicKey = (ECPublicKey)kf.generatePublic(ks);
} catch (InvalidKeySpecException e) {
log.warn("Received invalid key specification from client",e);
return;
} catch (ClassCastException e) {
log.warn("Received valid X.509 key from client but it was not EC Public Key material",e);
return;
}
lớp bạn đang sử dụng để đại diện cho Java ECDH của bạn là gì khóa công khai? Bạn nhận được câu trả lời tốt hơn bằng cách hiển thị mã của bạn và không yêu cầu mọi người đoán. –