-1
    X9ECParameters params = SECNamedCurves.getByName("secp256k1");
    ECDomainParameters CURVE = new ECDomainParameters(params.getCurve(), params.getG(), params.getN(), params.getH());
    ECCurve.Fp curve = (ECCurve.Fp) CURVE.getCurve();
    ECFieldElement x1 = new ECFieldElement.Fp(curve.getQ(), x);

我如何获得与上面相同的 ECFieldElement 对象,但限制是我只能使用以下任何构造函数。

    public F2m(int m, int k1, int k2, int k3, java.math.BigInteger x);

    public F2m(int m, int k, java.math.BigInteger x);

    private F2m(int m, int k1, int k2, int k3, org.spongycastle.math.ec.IntArray x);

我不是加密专家。我不知道所有这些其他参数是什么。

4

1 回答 1

1

Fp 是一个有限域,其元素是从 0 到 p-1 的数字。

F2m 是一个有限域,其元素是长度为 m 位的二进制字符串,表示从 0 到 2 m -1 的数字。

secp256k1 是 Fp 场上的曲线。它可以表示为org.bouncycastle.math.ec.ECPoint.Fp(或等效的海绵城堡类),其目的是包含 Fp 曲线的定义。

它不能表示为org.bouncycastle.math.ec.ECPoint.F2m(或等效的海绵城堡类),其目的是包含 F2m 曲线的定义。

如果您不知道什么是 Fp、F2m 或 secp256k1 或ECPoint.F2m构造函数参数的含义,您应该立即停止。在不了解自己在做什么的情况下破解密码学,直到它似乎有效,迟早会导致灾难。

于 2014-07-14T06:18:47.583 回答