Package szyfrow
Simple ciphers, enciphering, deciphering, and breaking.
The ciphers implemented here are mostly ones that predate mechanical cipher systems. The most complex cipher is the Enigma of World War II.
Each cipher is presented with functions to encipher, decipher, and automatically break messages with that cipher.
Most of the time, messages are broken by brute-force trying each possible key and scoring the resulting deciphered message using a bag-of-words probability measure (or a bag-of-bigrams, or a bag-of-trigrams).
You can find more information on the ciphers and how they are implemented in the codes and ciphers area of my blog.
Ciphers work on messages encoded with the 26 letters of the Latin alphabet,
without accents (the letters contained in the string.ascii_letters
constant).
Most of the ciphers convert letters to lowercase, strip accents from letters,
and drop all other characters (such as spaces and punctuation).
szyfrow.support.text_prettify
contains functions to make the output easier
to read, such as automatically recovering word boundaries.
The name comes from the Polish cipher bureau, the Biuro Szyfrów, who were breaking Enigma ciphers by hand before World War II.
Expand source code
"""Simple ciphers, enciphering, deciphering, and breaking.
The ciphers implemented here are mostly ones that predate mechanical cipher
systems. The most complex cipher is the Enigma of World War II.
Each cipher is presented with functions to encipher, decipher, and
automatically break messages with that cipher.
Most of the time, messages are broken by brute-force trying each possible key
and scoring the resulting deciphered message using a bag-of-words probability
measure (or a bag-of-bigrams, or a bag-of-trigrams).
You can find more information on the ciphers and how they are implemented in
the [codes and ciphers area of my blog](https://work.njae.me.uk/tag/codes-and-ciphers/).
Ciphers work on messages encoded with the 26 letters of the Latin alphabet,
without accents (the letters contained in the `string.ascii_letters` constant).
Most of the ciphers convert letters to lowercase, strip accents from letters,
and drop all other characters (such as spaces and punctuation).
`szyfrow.support.text_prettify` contains functions to make the output easier
to read, such as automatically recovering word boundaries.
The name comes from the Polish cipher bureau, the Biuro Szyfrów, who were
breaking Enigma ciphers by hand before World War II.
"""
Sub-modules
szyfrow.affine
-
Enciphering and deciphering using the affine cipher. Also attempts to break messages that use an …
szyfrow.amsco
-
Enciphering and deciphering using the Amsco cipher. Also attempts to break messages that use …
szyfrow.autokey
-
Enciphering and deciphering using the Autokey cipher. Also attempts to break messages that use a …
szyfrow.bifid
-
Enciphering and deciphering using the Bifid cipher. Also attempts to break messages that use a Bifid …
szyfrow.bombe
-
A simulator for Bombe machines …
szyfrow.cadenus
-
Enciphering and deciphering using the Cadenus cipher. Also attempts to break messages that use a …
szyfrow.caesar
-
Enciphering and deciphering using the Caesar cipher. Also attempts to break messages that use a Caesar …
szyfrow.column_transposition
-
Enciphering and deciphering using the Column transposition cipher. Also attempts to break messages that …
szyfrow.enigma
-
A simulator for Enigma machines …
szyfrow.keyword_cipher
-
Monoalphabetic substitution ciphers, mainly done by keyword. Enciphering and deciphering, and a couple of ways to break these ciphers.
szyfrow.language_model_files
-
Descriptions of English, used for building language models …
szyfrow.playfair
-
Enciphering and deciphering using the Playfair cipher. Also attempts to break messages that use a …
szyfrow.pocket_enigma
-
The Pocket Enigma machine, a simple example that illustrates the mechanisms of the Enigma machine. See [a …
szyfrow.polybius
-
Simple digraph substitution cipher, using the Polybius square. Enciphering and deciphering, and a …
szyfrow.railfence
szyfrow.support
-
Support utilities for ciphers …
szyfrow.vigenere
-
Vigenère polyalphabetic substitution ciphers, mainly done by keyword. Also does Beaufort …