我需要使用 secp256r1 和 BC 作为提供者来执行 ECIES 加密/解密。
我需要参考(1)如何在 JKS 密钥库中存储 ECIES 私钥-公钥对(2)从 JKS 检索公钥。
我根据https://zombiesecured.com/html/tutorials/Keytool/ECC-JK.html使用 keytool 命令提供密钥对。
- 签名算法名称:SHA256withECDSA
- 主题公钥算法:256 位 EC 密钥
(2) 您能否帮助如何检索 ECDSAPublicKey 格式的密钥作为加密的输入。
我找到了对 ECPublicKey 的解码密钥的参考,如下所示。我的第一个论点应该是什么?如何从 JKS 检索编码的密钥?
public static ECPublicKey decodePublicKey(byte[] encoded, String namedCurve) throws InvalidKeySpecException, NoSuchAlgorithmException, NoSuchProviderException, IOException
{
KeyFactory fact = KeyFactory.getInstance("ECDSA", BouncyCastleProvider.PROVIDER_NAME);
ECNamedCurveParameterSpec params = ECNamedCurveTable.getParameterSpec(namedCurve);
java.security.spec.EllipticCurve ellipticCurve = EC5Util.convertCurve(params.getCurve(), params.getSeed());
java.security.spec.ECPublicKeySpec keySpec = new java.security.spec.ECPublicKeySpec(ECPointUtil.decodePoint(ellipticCurve,encoded),EC5Util.convertSpec(ellipticCurve, params));
return (ECPublicKey) fact.generatePublic(keySpec);
}
- 如何使用 IESCipher、IESParameterSpec、engineInit 执行 ECIES 加密/解密。