I am currently trying to learn more about Elliptical curve crypthography and have finally started to get things working and undestanding the different pieces.
I've written a small project in C# and are currently testing it using really big numbers (the .NET BigInteger class). So far I've implemented the key generation algorithm, the point addition, doubling, encryption and decryption.
Now my problem is the key generation. The formula for generating a key is:
Q = d * G
Where Q is the public key, d is the private key and G the generator point.
If I for example want to use a 256 bit private key n would become a BigInteger with 78 numbers in it right (2^256)?
Now to calculate Q this will take a lot of time since it means I will need to perform point addition an insane number of times unless I'm not understanding something about it.
How is this accomplished in practise? Am I thinking about it in the wrong way or will I need to perform the point addition up to 2^256 times? What is the expected amount of time for modern computer to generate the key-pair?