ECDH 和 ECDSA 密钥之间有区别吗?
我正在构建一个使用 BouncyCastle 作为加密提供程序的网络应用程序。假设您有这个来生成密钥对:
ECParameterSpec ecSpec = ECNamedCurveTable.getParameterSpec("prime192v1");
KeyPairGenerator g = KeyPairGenerator.getInstance("ECDSA", "BC");
g.initialize(ecSpec, new SecureRandom());
KeyPair pair = g.generateKeyPair();
我很困惑为什么你会得到一个ECDSA KeyPairGenerator的实例。为什么它不直接说EC?我知道有一个 ECDH Key 类型随 BouncyCastle 一起提供,但我认为这两者代表了关于曲线上点的相同内容 - 或者我对它背后的理论完全错误?
我问的原因是,现在我的应用程序使用ECDH fine来建立AES密钥,但现在我想使用相同的EC密钥来使用ECDSA对每条消息进行签名。