我正在构建一个使用BouncyCastle作为密码提供者的网络应用程序。假设你有以下代码来生成密钥对:
ECParameterSpec ecSpec = ECNamedCurveTable.getParameterSpec("prime192v1");
KeyPairGenerator g = KeyPairGenerator.getInstance("ECDSA", "BC");
g.initialize(ecSpec, new SecureRandom());
KeyPair pair = g.generateKeyPair();
我很困惑为什么你要获取一个ECDSA KeyPairGenerator的实例。为什么不直接使用EC呢?我知道BouncyCastle有一种ECDH密钥类型,但我认为两者表示的都是关于曲线上点的相同信息,或者我的理解完全错误吗?
我问这个问题的原因是,现在我的应用程序可以使用ECDH来建立AES秘密密钥,但是我想使用同一条EC密钥使用ECDSA对每个消息进行签名。