Indeed I don't care the formula will really help me
Well, you have to start with "G". This point counts as the equivalent of 1.
This point is
Gx = 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798
Gy = 483ADA77 26A3C465 5DA4FBFC 0E1108A8 FD17B448 A6855419 9C47D08F FB10D4B8
DoubleYou can double a point (x, y) using the doubling formula
p = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F
num = 3 * x * x mod p
dem = 2 * y mod p
lambda = num * modInverse(dem) mod p
Rx = (lambda * lambda) - 2 * x mod p
Ry = ((x - Rx) * lambda) - y mod p
The result is (Rx, Ry)
AdditionYou can add 2 points (x1, y1) and (x2, y2) using
p = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F
num = (y1 - y2) mod p
dem = (x1 - x2) mod p
lambda = num * modInverse(dem) mod p
Rx = (lambda * lambda) - x1 - x2 mod p
Ry = ((x1 - Rx) * lambda) - y1 mod p
MultiplicationThe way to do this is "double and add".
You start with G and double it. That gives you 2G. You double again and get 4G and then 8G and so on.
You do this until you have 256 numbers.
You add some of them together using the add formula. You only include numbers where that bit is one in the binary representation.
There is info on wikipedia, but the formalas are broken at the moment.
This page has the 2 formulas.
A private key is just a number, and you multiply it by G.
If your private key was 25, then you would do it like this
25 = 11001 (in binary)
25 = 16 + 8 + 1
25 * G = 16 * G + 8 * G + 1 * G
You can work out 16G, 8G and G by just doubling G over and over. You then add them together.
16G + 8G + G = 25G
Like I said, it is pretty complex and will take a while to actually compute. The modular inverse function is slow.