在KeyAgreement.generateSecret()中的本地方法错误。

huangapple 未分类评论54阅读模式
英文:

Native Method Error in KeyAgreement.generateSecret()

问题

我正在尝试使用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)

请您帮我查找问题所在并告诉我我哪里出错了?

英文:

I'm trying to generate a shared secret with 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;
}

but after running the program I give this error:

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)

would you please help me out with this and tell me where I went wrong?

huangapple
  • 本文由 发表于 2020年5月30日 06:04:50
  • 转载请务必保留本文链接:https://java.coder-hub.com/62095263.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定