Ошибка собственного метода в KeyAgreement.generateSecret () - PullRequest
0 голосов
/ 30 мая 2020

Я пытаюсь сгенерировать общий секрет с помощью javax.crypto.KeyAgreement:

public static byte[] generateSharedSecret(KeyPair localKeyPair, PublicKey clientPublicKey) {
    byte[] sharedSecret = {};
    try {
        KeyAgreement keyAgreement = KeyAgreement.getInstance("ECDH");
        keyAgreement.init(localKeyPair.getPrivate());
        keyAgreement.doPhase(clientPublicKey, true);

        sharedSecret = keyAgreement.generateSecret();
        MessageDigest hash = MessageDigest.getInstance("SHA-256");
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    } catch (InvalidKeyException e) {
        e.printStackTrace();
    }


    return sharedSecret;
}

, но после запуска программы я выдаю эту ошибку:

Exception in thread "main" java.lang.IllegalStateException
at sun.security.ec.ECDHKeyAgreement.deriveKey(Native Method)
at sun.security.ec.ECDHKeyAgreement.engineGenerateSecret(ECDHKeyAgreement.java:130)
at javax.crypto.KeyAgreement.generateSecret(KeyAgreement.java:586)
at io.softitecture.jpushup.keygen.ECDHKeyGenerator.generateSharedSecret(ECDHKeyGenerator.java:47)
at io.softitecture.jpushup.payload.PayloadEncryptor.encrypt(PayloadEncryptor.java:19)
at io.softitecture.App.main(App.java:15)

не могли бы вы Помогите мне с этим и скажите, где я ошибся?

...