The ECDSA algorithm, secp256k1 for Bitcoin allegedly uses the equation
y ^ 2 = x ^ 3 + 7 mod P
to determine the validity of an alleged point upon the elliptical curve. Utilizing
When verifying public key 1 which has the following qualities:
x = 55066263022277343669578718895168534326250603453777594175500187360389116729240
y = 32670510020758816978083085130507043184471273380659243275938904335757337482424
I applied x ^ 3, then added 7, then mod P on that webpage. Then I square rooted it and got
Which is not y. How am I doing this wrong? My results suggests that this point is not a valid point on the curve, but everyone knows it is. Obviously I’m the one who’s wrong.
EDIT: I’d like to further clarify the question. My question is, how does one actually determine (as an example) the Y value while only having the X value. Bitcoin does it, the “Bitcoin Address Utility” also does it. When someone has a compressed key (which only contains the x coordinate) they are able to get the y coordinate as well. Utilizing the aforementioned webpage calculator does not work and others are saying its “modular root”. Anyone have Python 2.7.7 code which would do this or have a relatively simple way of explaining how to accomplish this whole thing? Thanks.