wouaaa thank you
Note from my examples that the integer value of 3 is represented in binary as:
11
That's 1*2
1 + 1*2
0If we think of G as the zero point, then G+G (which is the same as G*2) would be the first doubling. We get G*3 by adding the zero point and the first doubling (see how that lines up with the powers of 2?).
You'll see that works again with 15.
That's 1*2
3 + 1*2
2 + 1*2
1 + 1*2
0G is the zero point
G*2 is the first doubling (G+G)
G*4 is the second doubling (G*2 + G*2)
G*8 is the third doubling (G*4 + G*4)
We get G*15 by adding the zero point with each of those doublings (once again lining up with the powers of 2).
You can do the same with your k value.
Convert your k value from your original post from Hex to Binary. You'll get
1110001110110000110001000100001010011000111111000001110000010100100110101111101
1111101001100100010011001011011111011100100100100001001111010111001000001111001
0001100100100110111001001101001100101001001001010110011001000110110111100001010
0101011100001010101
As such, you can see that you'll need to perform 255 point-doublings. Then add together 123 of those points, specifically the doublings that line up with the 1's in that binary value:
The 255th doubling, 254th doubling, 253rd doubling, 249th doubling, 248th doubling, 247th doubling, 245th doubling, 244th doubling, ... and so on down to ... , 6th doubling, 4th doubling, 2nd doubling, and G itself.
is there a common point between the private key and the public key ?
The private key is not a point. It's an integer. It tells you how many times you need to add G + G + ... to get to the public key. Knowing that, you can use the binary value of k to determine which of the point doublings of G need to be added together as seen above.
If I were going to write software that needed to calculate public keys from private keys VERY QUICKLY, then I'd probably not bother calculating all those doublings every time. Instead, I'd just pre-calculate the 255 different points that are associated with the doublings and store them somewhere in the software. Then I could just perform the additions of the points associated with the doublings based on the binary value of the private key. The average number of additions I'd need to perform for any private key would be 128, and the worst case maximum number of additions would be 256.