1
我需要將公鑰轉換爲BigInteger。在下面的代碼中,我提取了私鑰並將其存儲爲BigInteger
。但是,當我對公衆採用相同的方法時,它不起作用。如何將公鑰轉換爲BigInteger
public static void main(String[] args) throws Exception {
Security.addProvider(new BouncyCastleProvider());
BigInteger ZERO=new BigInteger("0");
int c;
// ECParameterSpec ecSpec = ECNamedCurveTable.getParameterSpec("P-224");
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);
它以什麼方式不起作用?你有例外嗎? – serg10 2012-04-12 06:38:01
@ user1208304您可能想提一下[獲取那一點代碼](http://www.bouncycastle.org/wiki/display/JA1/Elliptic+Curve+Key+Pair+Generation+and+Key+Factories) 。 – martijno 2012-12-27 21:38:03