Is it possible without the private key to divide a point by 2 ?
why not. private key will tell you how many times to add G to itself. but after you are done and have the value for k*G as point P then you can do whatever you want with that point. for example you can add another G to that point and compute Q=P+G or R=P-G and similarly you can multiply that point with any number like computing S=3*P (the same way you would compute 3*G).
2
-1 is just another number that your point (P or G or Q,...) is multiplied by. you just have to first calculate what integer 2
-1 is in congruence with. to do that you compute its modular multiplicative inverse as i explained above. there is also an example in my second comment with small numbers.
First thanks for the response.
Ok i begin to understand the concept but not ready to go yet ^^.
I know add or substract a point to another (different or equal) but i can't divide a point by any number if i only have the x and y coordinates.
If it's possible can you show me how divide this point by 2 for example ?
x = 72488970228380509287422715226575535698893157273063074627791787432852706183111
y = 62070622898698443831883535403436258712770888294397026493185421712108624767191
It is public key for private key: 10 , and we say here i haven't got this private key.
I expect to obtain the public key:
x = 21505829891763648114329055987619236494102133314575206970830385799158076338148
Y = 98003708678762621233683240503080860129026887322874138805529884920309963580118
(private key 5 )
Thanks in advance
In secp256k1 there are two important primes - the prime
p which is used for coordinates x and y (2^256 - 2^32 - 977), and the prime
n, which is the group order (2^256 - 432420386565659656852420866394968145599).
The group is defined by two operations - addition of two points, and doubling a point.
From this we easily could multiply a point by scalar, this is series of additions and doublings.
Multiplying a point by scalar gives another point. Multiplying a point by
n gives the point at infinity (0,0).
Dividing by 2 in a group with order
n is equivalent to multiplying by the scalar 1/2 (mod
n).
One can find the inverse of 2 modulo
n by the
Extended Euclidean Algorithm.
1/2 (mod
n) = 57896044618658097711785492504343953926418782139537452191302581570759080747169
You'd have to multiply (x,y) by 1/2 (mod
n), this gives
x = 21505829891763648114329055987619236494102133314575206970830385799158076338148
y = 98003708678762621233683240503080860129026887322874138805529884920309963580118