Java では、バイト配列として送信する ECDH 公開鍵があります。
バイト配列を受け取ったら、どうすればそれを公開鍵に戻すことができますか?
私は Bouncy Castle を使用していますが、Java ソリューションも同様に便利です。
ありがとう
Java では、バイト配列として送信する ECDH 公開鍵があります。
バイト配列を受け取ったら、どうすればそれを公開鍵に戻すことができますか?
私は Bouncy Castle を使用していますが、Java ソリューションも同様に便利です。
ありがとう
エンコードされたキーを取得したら、デフォルトの「[your keyPair] .getPublic()。getEncoded()」メソッドを使用したと仮定すると、これは機能します。
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;
}
生のバイトは ECDH キーに対してどのようにフォーマットされていますか? 生のバイトはどこで取得していますか?
通常、適切な *Spec クラスを使用して未加工の鍵素材を Key に変換しますが、ECPublicKeySpecおよびDHPublicKeySpecクラスは未加工のバイト配列を受け入れません。