Elliptic Curve Group Calculator

Easily calculate elliptic curve groups, plus some cryptology.

How to use this tool:

This web app asks allows the user to input an elliptic curve and solves for the elliptic curve group under a given modulus. You can visualize the curve via a graph or the group's Cayley table.

Additionally, I've included a tool that encrypts and decrypts messages using these groups. Once you have created an elliptic curve and the Cayley table has appeared, you can scroll down to the "Cryptology Tool" and encode/decode your own messages.

For more information about elliptic curve groups or the cryptology tool, scroll down to the bottom of the page.

Cryptology Tool:



What is an elliptic curve group?

The elements of elliptic curve groups are the points that satisfy an elliptic equation, i.e. the points that satisfy

\(y^2 \equiv x^3 + ax + b \pmod{n}\)


for some \(a, b\), such that \(4a^3 + 27b^2 \pmod{n} \neq 0\). There is also an identity element \(\infty\).

The group operation is defined by \(A \cdot B = -C\), where \(C\) is the third point on the elliptic curve that also lies on the line drawn through \(A\) and \(B\). If no such point exists, we define \(C\) to be \(\infty\). The point \(-C\) is the point obtained by reflecting \(C\) over the x-axis.

How does the encryption tool work?

We can assign every point a letter value, and then combine letters together using this operation to obtain a new letter. The encryption works by checking if the current letter can be represented by a combination of two letters from the key. If it can, then it is converted to this combination, and if it cannot, then it is left as it is. There are multiple ways to combine letters to get a given letter, so it is possible to obtain different encrypted messages for a single plaintext message. When encrypting, the program chooses the pairing it will use randomly.

To decrypt a message is fairly straightforward: again, we can check if a letter is representable in the key. If it is, then we check the next letter and combine the two using the key. If it isn't, then we leave it as it is and move to the next letter.

As you use the program, you might notice that you sometimes get messages where some of the original text does not appear to be encrypted. You probably have an elliptic curve group with very few elements, and therefore very few letters in the alphabet that are encodable. If you're having trouble finding a large elliptic curve group to use under mod 13, try \(a=1\) and \(b=0\).

You can find the code for the tool on my Github.