java - 从坐标创建椭圆曲线点对象

标签 java bouncycastle elliptic-curve spongycastle

我有一个点的 x 和 y 坐标以及曲线的名称。我现在想从中创建一个 org.bouncycaSTLe.jce.interfaces.ECPublicKey 对象,自动使用提供的实现。目标是无论使用 bouncycaSTLe 还是其 Android 端口 spongycaSTLe,都能够创建对象。

这就是我现在正在做的事情。问题是,EC5Util 类不包含在 spongycaSTLe 中。我想要一个解决方案,可能使用一个工厂,只需要调用一个方法。这可能吗?

java.security.spec.ECPoint w = new java.security.spec.ECPoint(x, y);
ECNamedCurveParameterSpec params = ECNamedCurveTable.getParameterSpec("secp256k1");
KeyFactory fact = KeyFactory.getInstance("ECDSA", "BC");
ECCurve curve = params.getCurve();
java.security.spec.EllipticCurve ellipticCurve = EC5Util.convertCurve(curve, params.getSeed());
java.security.spec.ECParameterSpec params2 = EC5Util.convertSpec(ellipticCurve, params);
java.security.spec.ECPublicKeySpec keySpec = new java.security.spec.ECPublicKeySpec(w, params2);
return (ECPublicKey) fact.generatePublic(keySpec);

最佳答案

ECPointTest.java 中 BouncycaSTLe 内的单元测试似乎覆盖了这种情况:

ECFieldElement.Fp x_ecfe = new ECFieldElement.Fp(q, x);
ECFieldElement.Fp y_ecfe = new ECFieldElement.Fp(q, y);
ECPoint.Fp point = new ECPoint.Fp(curve, x_ecfe, y_ecfe);

您所处的情况非常独特。如果您愿意详细说明您这样做的原因,我很有兴趣了解一下。

关于java - 从坐标创建椭圆曲线点对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18926463/

相关文章:

java - 保护 Flex-BlazeDS 应用程序的最佳方法是什么?

ios - ECC Curve25519 钥匙串(keychain)

c# - 如何在 Windows 上的 .net 框架中使用来自 ECC X509 证书的公钥加密数据?

java - 尝试从证书中获取签名时出现格式错误的内容异常

java - 使用 BouncyCaSTLe API 时出现 RSA key 生成错误

java - 使用 BouncyCaSTLe 签署消息摘要

ssl - 有人可以解释一下 "ecdh_tmp_cb"回调的用法吗?

java - 引用水平Java包

java - java中的自定义分析器,使用edgeNGram标记过滤器

java - 用Java实现LZ78算法