Easily calculate elliptic curve groups, plus some cryptology.
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.
The elements of elliptic curve groups are the points that satisfy an elliptic equation, i.e. the points that satisfy
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.