Elliptic Curve and Finite Field Cipher Visualization Tools Download Page

Elliptic Curve and Finite Field Cipher Visualization Tools Download Page

(Updated March 26, 2012)

This page has three versions of our Elliptic Curve and Finite Field Cipher Visualization prototype software for Windows, Linux and MacOS.


Run FiniteField from the installation directory. A window shows up in which the following "pages" are available.

User Guide

Table page

The elliptic curve formula can be set on this page. Fill in a, b and p, and press "Done". The formula will be y2 = x3+ax+b (mod p) where 4a3+27b2 != 0 (mod p). Additive, Multiplicative and Inverse Table are also shown on this page.

Curves Page

The continuous elliptic curve will be shown on this page. You can use slider to zoom in/out.

To show associative law, press "Associative Law" and select three points by clicking on the canvas.

To see how to calculate the addition of two points, press "Third Point" and then select two points by clicking on the canvas.

Pressing "Undo" will unselect the most recently selected point, and pressing "Redo" will reselect it.

Reset will clear all selected points and also repaint the canvas using the predefined scale.

Finite Field Page

This page shows the finite field of elliptic curve. The four "inf" symbols outside the rectangular grid represent the same point at infinity (0).

To show the addition of two points, first select two points by clicking the points, and press "Detail" to see how the result is calculated. In the "Detail Computation" window, press "Run" to view the entire calculation procedure. You may also practice the calculation here. Pressing "Step" will lead to a step-by-step practice, and pressing "Practice" is similar, except that your answer will be checked when all blanks are filled in.

To see the calculation of a subgroup of a point P, select the point P and press "kP". If no point is selected, the button will be disabled. During this procedure, you may also click "Detail" to see how the result is computed.

To view all sub-groups, press "Sub-Group". All prime order subgroups will be shown first, and pressing "Sub-Group" will show subgroup of each point. If no prime order subgroup exists, the "Sub-Group" button will be disabled. In this case, change a/b/p on the "Tables" page.

To see how we use this finite field of elliptic curve to encrypt data, press "Encryption". The "Encryption & Decryption" window will be introduced later.

Pressing the "Unselect" button will unselect all previous selected points, but not other status, while pressing the "Reset" button will reset all status, including all previous selected points.

To view the tables in a separate window, press "Table". The additive, multiplicative, and inverse table will be shown from the top to the bottom.

The coordinate of the points can be view by moving the mouse over them.

The maximum p and the grid vary according to the change of window resolution. Increasing the window resolution will result in a higher resolution of grid, and might allow you to select a larger value of p.

Encryption & Decryption Window

Encryption Page

This page shows how to encrypt a point. M is the point to be encrypted. P is a point in one of the prime order subgroups and d is an integer as the private key. Given P and d, the public key Q is computed as dP, k is an integer to compute the encrypted points, and C1 and C2 are the encrypted points. P, d, M and k can be reselect by users.

To change P/M, press "Select Another", and select a point in the main window. To change d/k, enter an integer in the corresponding line editor.

To practice, press "To Practice" and fill all blanks. If your answer is the point 0, click the "Inf" right to the line editor. When you finish, press "Check Ans" to see if your answer is correct. Note that you cannot switch to other pages until the practice is done.

Decryption Page

Given the ciphertext C1, C2 and private key d, this page shows how to recover M. You can also practice the decryption calculation here.

Plaintext to Point Page

This page shows given the formula (defined by a, b and p), how to convert the plaintext m to a point M. You can press "Random New" to see a new instance or press "To Practice" to practice the procedure.