我正在构建一个使用 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 对每条消息进行签名。