将ECPoint转换为BigInteger

时间:2012-04-30 05:32:47

标签: java bouncycastle elliptic-curve

任何人都可以帮我解决这个问题吗?我需要将公钥转换为BigInteger。公钥为ECPoint,这是曲线(x,y)上的一个点。我不知道如何将其转换为BigInteger。请帮我。这是我的代码:

public static void main(String[] args) throws  Exception {
    Security.addProvider(new BouncyCastleProvider());
    ECCurve curve = new ECCurve.Fp(
        new BigInteger("883423532389192164791648750360308885314476597252960362792450860609699839"), // q
        new BigInteger("7fffffffffffffffffffffff7fffffffffff8000000000007ffffffffffc", 16), // a
        new BigInteger("6b016c3bdcf18941d0d654921475ca71a9db2fb27d1d37796185c2942c0a", 16)); // b

    ECParameterSpec ecSpec = new ECParameterSpec(
        curve,
        curve.decodePoint(Hex.decode("020ffa963cdca8816ccc33b8642bedf905c3d358573d3f27fbbd3b3cb9aaaf")), // G
        new BigInteger("883423532389192164791648750360308884807550341691627752275345424702807307")); // n
    KeyPairGenerator kpg = KeyPairGenerator.getInstance("ECDSA", "BC");
    kpg.initialize(ecSpec, new SecureRandom());
    KeyPair keyPair = kpg.generateKeyPair();
    PublicKey pubKey = keyPair.getPublic();
    System.out.println(pubKey);
    PrivateKey privKey = keyPair.getPrivate();
    System.out.println(privKey);
    BigInteger s = ((ECPrivateKey) privKey).getS();
    System.out.println(s);
    java.security.spec.ECPoint a = ((ECPublicKey) pubKey).getW();
}

0 个答案:

没有答案