9

Java では、バイト配列として送信する ECDH 公開鍵があります。

バイト配列を受け取ったら、どうすればそれを公開鍵に戻すことができますか?

私は Bouncy Castle を使用していますが、Java ソリューションも同様に便利です。

ありがとう

4

3 に答える 3

7

エンコードされたキーを取得したら、デフォルトの「[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;
    }
于 2011-02-11T13:16:38.953 に答える
-1

生のバイトは ECDH キーに対してどのようにフォーマットされていますか? 生のバイトはどこで取得していますか?

通常、適切な *Spec クラスを使用して未加工の鍵素材を Key に変換しますが、ECPublicKeySpecおよびDHPublicKeySpecクラスは未加工のバイト配列を受け入れません。

于 2010-02-08T02:08:47.270 に答える