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

- Click
**here**to download the Windows version.

This version is a self-extracting one with name ECVisWin.exe.- Download this file to a selected directory and run it by double-clicking on its icon.
- This program will run, create a directory EC-Windows, and save all files to this directory.
- Double-click the program FiniteField to run it.

- There are two versions for Linux.
Click
**here**to download the Linux dynamic linking version (smaller), or click**here**to download the Linux static linking version (larger). Both versions have been tested on CS lab machines and on other Linux machines. They are standard Unix tar.gz files with filenames ECVisLinuxDynamic.tar.gz and ECVisLinuxStatic.tar.gz. We recommend the dynamic version. However, if it does not run properly on your Linux machine, switch to the static version.- Download this file to a selected directory.
- The standard Unix way to uncompress and untar this file is to
run the following commands
gzip -d *.gz; tar xvf *.tar

- A binary executable FiniteField will be created in the selected directory. This is the Elliptic Curve and Finite Field Visualization program.

- Click
**here**to download the MacOS version.

This version is a standard zip file with name ECVisMac.zip. However, the MacOS version requires some extra work to be installed properly.- Download this file to a selected directory.
- The standard Unix way to uncompress this file is to
run the following command
unzip *.zip

- This will create several directories. The EC Visualization software is in FiniteField.app/Contents/MacOS/FiniteField.
- However, you need one more step because the
Qt library is not provided.
The package can be downloaded from the following link (recommended):
**http://get.qt.nokia.com/qt/source/qt-mac-opensource-4.7.1.dm**. Or download the source files from this link:**http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.1.tar.gz**, and compile by following steps on this webpage:**http://doc.qt.nokia.com/4.7-snapshot/install-mac.html**. After this, FiniteField should work properly.

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.

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.

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.

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

**
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.
**