This section documents the ways in which many cryptographic ciphers can be cryptanalysed and broken. The easiest ciphers to break are the ones which have existed for a long time. With this in mind, we will be focussing on classical ciphers, as these will be the easiest to explain.
This page provides a very general overview of the methods and techniques used to cryptanalyse just about any algorithm that enciphers text. Much of this will be slightly mathematical, but we will try to provide programs for everything. This means that in the event that you don't completely understand the theory of a technique, you should still be able to use it.
Most of the techniques described here will not work on modern cryptographic algorithms, so if this is what you are looking for, you will probably have more success looking elsewhere.
Much of the fun with these algorithms lies in cracking them. Some of the simpler algorithms such as the caesar cipher and the substitution cipher can be solved by hand, while others like the ADFGVX and the trifid cipher are more easily solved with the help of a computer.
What different methods are there?
This section will include implementations of common classical ciphers in various languages.
The examples in this section will describe techniques for cryptanalysis of specific ciphers. These examples will focus on automated techniques i.e. techniques for using a computer to break ciphers. In general these techniques will be different from those used to break ciphers by hand.
- Cryptanalysis of the Affine Cipher
- Cryptanalysis of the Autokey Cipher
- Cryptanalysis of the Bifid cipher
- Cryptanalysis of the Caesar Cipher
- Cryptanalysis of the Columnar Transposition Cipher
- Cryptanalysis of the Foursquare Cipher
- Cryptanalysis of the Hill Cipher
- Cryptanalysis of the Playfair cipher
- Cryptanalysis of the Simple Substitution Cipher
- Cryptanalysis of the Straddle Checkerboard
- Cryptanalysis of the Vigenere Cipher
- Cryptanalysis of the Vigenere Cipher, Part 2
When cryptanalysing ciphers, we usually try many 'candidate' keys until a key is found that results in a readable output. Text Characterisation is a way of automatically determining how close a piece of text is to natural english, which can be used as an aid to a cryptanalyst, or as a component in automatic code cracking software.
Breaking Machine Ciphers
This section will deal with cryptanalysis of slightly more advanced ciphers such as Enigma and M-209 used during the second world war. These are a fair bit more complicated than the simple examples provided elsewhere, however they still rely heavily on the techniques developed such as hill climbing, using the Index of Coincidence, and quadgram statistics.
Letter Frequencies for Various Languages
Provides ngram models for several languages.
This section will deal with breaking modern ciphers, the methods presented here don't have much in common with the classical techniques and are much more mathematical in general.