The Cryptography Explorer program was developed for the investigation of cryptography and cryptanalysis. It was developed as a teaching tool to try to remove the tedious calculations but still require the user to make the decisions for the processes and analysis. This is a Java application, so if the Java JRE is not installed on your computer download and install the current version of the Java JRE (1.7.0 or later). You can get the most current version at the Oracle Web Site.

**Instructions:** Download and run the CryptographyExplorerSetup.exe program and follow the instructions on the screen. This will place links to the Cryptography Explorer program in your Start menu.

**Instructions:** The Cryptography Explorer program is a single executable file (CryptographyExplorer.exe)
that can be run on any machine that has version 1.7.0 (or higher) of Java installed.

**Instructions:** Download and unzip the CryptographyExplorer_Linux.zip file. This will extract
CryptographyExplorer.jar and several image files that can be used as program icons. You can run the application using the following command, or create a shortcut/menu-item using the same command in the launcher.

```
java -jar CryptographyExplorer.jar
```

**Instructions:** Download and unzip the CryptographyExplorer_Mac.zip file, This will extract the
Cryptography Explorer (.app) application, simply copy this file to your Applications folder.

**Instructions:** The Java Archive (Executable JAR file) can be downloaded using the Linux download link above.

- Supported Ciphers
- Mono-Alphabetic Substitution
- Vigenere
- Scytale
- Rail Fence
- Columnar
- Two Square
- Four Square
- Playfair
- ADFGX
- ADFGVX
- Linear Feedback Shift Register (LFSR)
- Hill
- Enigma
- RSA
- ElGamal

- Cipher Tools
- Text and Stream Analysis
- Frequency Analysis
- Hill Climb Analysis
- Kasiski's Method
- Coincidence Analysis
- Dot Product Analysis
- Substring Compare
- LFSR Cipher Analysis

- Text Tools
- Text Extractor
- Text Combiner
- Text Converter
- User Defined Language Creator

- Calculators
- Integer Calculator
- Modular Matrix Calculator
- Elliptic Curve Calculator
- Random Number Generator

- Factoring Tools
- Brute Force Factoring
- Fermat Factoring
- Pollard P - 1 Factoring
- Williams P + 1 Factoring
- Pollard Rho Factoring
- Brent's Method Factoring
- Quadratic Sieve Factoring
- Multiple Polynomial Quadratic Sieve Factoring
- Lenstra's Elliptic Curve Factoring
- Multiple Factoring Methods
- B-Smooth Number Finder

- Discrete Logarithm Tools
- Brute Force Discrete Logarithm
- Pohlig-Hellman Discrete Logarithm
- Pollard Rho Discrete Logarithm
- Pohlig-Hellman with Pollard Rho Discrete Logarithm
- Index Calculus Discrete Logarithm
- Variant of the Index Calculus Discrete Logarithm
- Index Calculus B-Smooth Number Finder

- Notepad
- Gridpad

- Text and Stream Analysis

**10/25/19**: Version 2.12.1- Added a B-Smooth Number Finder for the Index Calculus discrete logarithm algorithm.

**10/16/19**: Version 2.11.1- Updated the B-Smooth numbers finder grid to be multi-selectable. This allows highlighting and copy of multiple rows which makes it easier to view the desired small prime factorizations.

**7/16/19**: Version 2.10.1- Added an Elliptic Curve Calculator

**11/10/15**: Version 2.9.1- Added a B-Smooth Number Finder for the investigation of the Quadratic Sieve factoring algorithm.

**8/6/15**: Version 2.8.2**Bug Fix:**Fixed a bug in the input boxes that take multiple numbers as input, such as the RSA algorithm. Bug found during testing.

**8/3/15**: Version 2.8.1- Added editing pop-up menus to all input and output editing boxes.

**7/24/15**: Version 2.7.1- Added facilities to the Modular Matrix Calculator tool for copying the matrices to Mathematca matrix format and to Maxima matrix format.

**7/13/15**: Version 2.6.1- Added facilities to the Gridpad tool for copying the grid contents to Mathematca matrix format and to Maxima matrix format.

**7/6/15**: Version 2.5.1- Added a Mode selection to the Hill Cipher tool.

**6/5/15**: Version 2.4.1- Added a hill climb analysis tool for substitution ciphers.
- Added a Gridpad tool for manipulating grid type data.

**5/11/15**: Version 2.3.1- Added trigram and n-gram options to the frequency analysis tool.
- Added double factorial and quick semiprime calculation to the integer calculator.

**4/17/15**: Version 2.2.1- Changed the name to Cryptography Explorer. Since the purpose of the program is educational, it seemed to be a more appropriate name.
- Incorporated worker threads for lengthy processes.
- Added Ciphers
- Mono-Alphabetic Substitution - Random Kama-Sutra Key Generator
- Vigenere - Plaintext and Ciphertext Autokey options.
- Scytale
- Rail Fence
- Columnar
- Two Square
- Four Square
- ElGamal

- Added Tools
- Kasiski's Method
- Text Converter - Several new conversion options added.
- Integer Calculator
- GCD on lists.
- Decimal and Integer Square Roots
- Chinese Remainder Theorem on arbitrary length lists of congruences.
- Jacobi Symbol
- Previous primes.
- Nth prime
- Number of primes less than N
- Euler Totient function
- Primitive root calculations
- Primitive root verification
- Integer Factoring
- Discrete Logarithm calculations
- Expression Evaluator

- Factoring Tools
- Brute Force Factoring
- Fermat Factoring
- Pollard P - 1 Factoring
- Williams P + 1 Factoring
- Pollard Rho Factoring
- Brent's Method Factoring
- Quadratic Sieve Factoring
- Multiple Polynomial Quadratic Sieve Factoring
- Lenstra's Elliptic Curve Factoring
- Multiple Factoring Methods

- Discrete Logarithm Tools
- Brute Force Discrete Logarithm
- Pohlig-Hellman Discrete Logarithm
- Pollard Rho Discrete Logarithm
- Pohlig-Hellman with Pollard Rho Discrete Logarithm
- Index Calculus Discrete Logarithm
- Variant of the Index Calculus Discrete Logarithm

**2/3/15**: Version 2.1.2- Recompiled with new grid tool for faster spreadsheet operation.
- Extended the Hill cipher matrices to a maximum size of 20 X 20.
- Changed the algorithm for Hill matrix inverse checking.
- Extended the matrix calculator matrices to a maximum size of 100 X 100.
**Bug Fix:**Fixed a bug in the input checking of the Hill cipher matrix. Bug found during testing.

**2/2/15**: Version 2.1.1- Added a modular matrix calculator, a simple matrix manipulator and arithmetic tool. Each matrix has an associated modulus for all calculations. Reduction, inverses and matrix arithmetic is done over the associated modulus.

**1/26/15**: Version 2.0.1- Revised the user interface on all input and output boxes, and on all tables.
- Added Undo and Redo capabilities to all input boxes.
- Added the ability to do all text conversions in the input boxes.
- Revised the printing facilities on all program input, output, and reporting features.
- Added print preview facilities on all program input, output, and reporting features.
- Added word and character count statistics to input and output boxes.
- Added the ability to create user-defined languages with relative frequencies for each character.
- Added several new text converters.
- Added LaTeX table and array formatting copy options to many of the tables and matrices.
- Added Mathematica and Maxima syntax copy options to the Hill cipher matrices.
- Added open child window tracking in the Window sub menu.
- Revised all bar charts to produce better images, as well as print and print preview options.
- Combined the prime number facilities into the Integer Calculator and added some integer calculation facilities.
- Added a collapsible Quick Help system that is linked to the currently selected child window.
- Revised and updated the help system.

**9/24/09**: Version 1.2.1- Added an LFSR Cipher Analysis window for determining the key recurrence relation given a portion of the key.
- Fixed some minor user interface problems.

**9/22/09**: Version 1.1.1- Added a random number generator that uses either the linear congruential algorithm, Java's built-in Random cLass or the Blum-Blum-Shub algorithm.

**8/25/09**: Version 1.0.1- First public release.

**JLaTeXMath:**(by Calixte Denizet and Sylvestre Ledru): One component in the matrix workspace display framework of the modular matrix calculator.**Oracle Help for Java:**(Oracle): The help system.**JFreeChart:**(by David Gilbert): Renders all of the bar charts in the program.