Author

Topic: uncompressed public key <->compressed samples (Read 188 times)

legendary
Activity: 2128
Merit: 1293
There is trouble abrewing
October 07, 2019, 10:22:26 AM
#2
when you have a compressed public key you have one starting byte (0x02 or 0x03) followed by x. compute y2 first from x like this:
y2  = x3 + 7 (mod p)
then compute y by an square root algorithm, since p for bitcoin is like (p%4 = 3) you can simplify it as:
y = (y2)(p+1)/4 (mod p)

the acceptable y is:
if y is odd & first byte was 2 => -y
if y is even & first byte was 3 => -y
otherwise y

for examples, go to bitaddress.org generate private keys and look at the compressed and uncompressed public key results.
member
Activity: 138
Merit: 25
Here is "How to get uncompressed public key from compressed one ?" - Python sample.
I want create converter compressed<->uncompressed in C++.
I plan using Boost multiprecision (I think, using uint256.cpp from Bitcoin sources is not enough - this have only serialization and comparision)
I search samples of pairs compressed/uncompressed or calculator online.
Jump to: