Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I use the following codes to try to import a bitcoin private key and compute the public key. The computed ECPublicKey is not equal to bitcoinPublicKey. How to correct?

string bitcoinPrivateKeyStr = "cVnb9S9GgHxsBxfaApvGnWvfwqXRYdV8f1Q2CkQeBa4EsWTNmsGS";
BitcoinSecret bs = new BitcoinSecret(bitcoinPrivateKeyStr);
byte[] bitcoinPrivateKeyBytes = bs.PrivateKey.ToBytes();
byte[] bitcoinPublicKeybytes = bs.PubKey.Decompress().ToBytes();

X9ECParameters curve = SecNamedCurves.GetByName("secp256k1");
ECDomainParameters domain = new ECDomainParameters(curve.Curve, curve.G, curve.N, curve.H);
BigInteger BCPrivateKeyBI = new BigInteger(bitcoinPrivateKeyBytes);
Org.BouncyCastle.Math.EC.ECPoint q = domain.G.Multiply(BCPrivateKeyBI);
ECPrivateKeyParameters ECPrivateKey = new ECPrivateKeyParameters(BCPrivateKeyBI, domain);
ECPublicKeyParameters ECPublicKey = new ECPublicKeyParameters(q, domain);
AsymmetricCipherKeyPair KeyPair = new AsymmetricCipherKeyPair(ECPublicKey, ECPrivateKey);
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
331 views
Welcome To Ask or Share your Answers For Others

1 Answer

BigInteger BCPrivateKeyBI = new BigInteger(1, bitcoinPrivateKeyBytes);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share

548k questions

547k answers

4 comments

86.3k users

...