如何使用 FIPS BouncyCastle 将 ECPrivateKey

如何使用 FIPS BouncyCastle 将 ECPrivateKey 转换为 ECPublicKey?


我使用以下代码(稍微简化)将 ECPrivateKey 转换为 ECPublicKey:


public static ECPublicKey getPublicKeyFromPrivateKey(ECPrivateKey privateKey) throws GeneralSecurityException {

    final KeyFactory keyFactory = KeyFactory.getInstance("ECDSA", new BouncyCastleProvider());

    final BCECPrivateKey bcecPrivateKey = (BCECPrivateKey) privateKey;

    final ECParameterSpec ecSpec = bcecPrivateKey.getParameters();

    final ECPoint q = ecSpec.getG().multiply(bcecPrivateKey.getD());

    final byte[] qBytes = q.getEncoded(false);

    final ECPoint point = ecSpec.getCurve().decodePoint(qBytes);

    final ECPublicKeySpec pubSpec = new ECPublicKeySpec(point, ecSpec);

    return (ECPublicKey) keyFactory.generatePublic(pubSpec);

}

这对于非 FIPS BouncyCastle 工作正常。现在,我们需要以符合 FIPS 的方式做同样的事情。这里的问题是像 ECParameterSpec 这样的类在 FIPS BouncyCastle 1.0.1 中似乎不存在。我们如何使用 FIPS BouncyCastle 做同样的事情?


冉冉说
浏览 225回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java