Cryptanalysis library for breaking classical ciphers
Branch: master
Clone or download
CameronLonsdale Update documentation
Fixed spelling mistake
Latest commit 235e163 May 7, 2018


Documentation Status Build Status Coverage Status

lantern is a cryptanalysis library to assist with the identification and breaking of classical ciphers. The library provides general purpose analysis tools, as well as premade modules to break well known ciphers.

from lantern.modules import shift
from lantern import fitness

ciphertext = "iodj{EuxwhIrufhLvEhvwIrufh}"

decryptions = shift.crack(ciphertext, fitness.english.quadgrams)

In short, lantern can be used to:

  • Identify ciphers from ciphertext
  • Automatically crack well known ciphers
  • Analyze ciphertext to assist in the breaking of custom crypto systems


pip3 install -U lantern


Full documentation available at


Python 3.4 or newer required.

lantern has no external dependencies outside of the standard library.


As a library, lanterns functionality can be used in REPL or pre-written scripts. The library aims to be highly modular and generalised, providing the user with the ability to extend / modify / combine functions with others to solve particular problems.

Example programs



Setup a virtual environment.

virtualenv -p python3.5 venv
source ./venv/bin/activate

Install development requirements.

pip install -Ur dev_requirements.txt

Use py.test to run tests using your current working environment.

Use tox -r to build a new environment for each python version and run all tests.


Document is built using sphinx and napoleon-sphinx.

Install documentation requirements.

pip install -Ur docs/requirements.txt

Build the HTML, output in build/html.

make html