Cipher Corpus
Teaching & Overview
Resources for educators, students, and tool builders using the classical cryptanalysis benchmark dataset.
A first codebreaking session
Solve an original library notice in about 15 minutes, then extend the session with Vigenère, language samples and homophonic substitution. Work in pairs and ask each learner to defend a guess with evidence.
- Print the student activities (no answers)
- Open the separate facilitator’s answers
- Match classical topics to museum exhibits
Print either sheet with your browser’s Print command, or save it as PDF. No account is required.
What is the Cipher Corpus?
- A curated library of classical ciphertext challenges with known plaintexts and metadata
- Includes synthetic examples and records labeled historical, plus multilingual and noisy records; see the source and errata for the limits of each label
- Designed for learning, teaching, and benchmarking cryptanalysis tools
How to Use the Corpus
- Practice codebreaking in Challenge Mode (solution hidden)
- Study metadata and solutions in Known Answers mode
- Download the dataset for research or tool development
- Contribute new records following the contribution guide
For Educators
Reading the Evidence offers six short, paper-informed investigations with original examples: key matching, mixed cleartext, transcription errors, recurring symbols, controlled token transformations and concealed-message reliability. Each includes feedback, a source credit and a stated limit.
Reading the Radio Log is a traffic-analysis exercise on an invented two-day radio log. Learners map a network without decrypting anything, match changing callsigns, and keep a headquarters hypothesis apart from what the log shows. Missing intercepts stay visible, and a tempting wrong match has consequences they can see.
For a history-led reading group, the Cipher Museum book companion offers an opening excerpt, discussion questions and a free fictional evidence investigation. The activity needs no account or previous codebreaking experience.
- Use synthetic exercises and source-reviewed historical examples to teach cryptanalysis concepts
- Assign challenges by difficulty, cipher type, or language
- Demonstrate solver benchmarking and reproducibility
A small repeatable columnar experiment
Compare direct scoring and staged initialization with the existing columnar search. The classroom runner uses four synthetic known-answer messages, three fixed seeds and two variants: 24 runs, including failures. It records exact plaintext and exact key recovery separately, preprocessing and total evaluations, elapsed time, settings and source-file hashes.
In a repository checkout with Node.js, run:
node scripts/columnar-classroom.js > columnar-classroom-results.json
node scripts/columnar-classroom.js --check
Open the classroom worksheet · Inspect the fixed fixtures · Inspect the runner
Keep unsuccessful and preprocessing-exhausted runs in the denominator. Repeated seeds on one message are dependent; these tiny-sample counts are not general recovery probabilities. Equal score-evaluation budgets are not equal CPU time. Exact replay excludes elapsed milliseconds.
Reading: George Lasry, A Methodology for the Cryptanalysis of Classical Ciphers with Search Metaheuristics (2018 published thesis), §4.7, printed pp. 59–60 / PDF pp. 80–81, and §5.3, printed pp. 67–75 and 79–80 / PDF pp. 88–96 and 100–101. This exercise adopts the comparison method, not the thesis’s recovery rates.
For Tool Builders
- Test solvers on a reproducible, versioned benchmark
- Use the schema for integration and validation
- Publish measured results with reproducibility receipts; the statistics report contains no measured solver-accuracy claims
Engine Accuracy & Provenance
Verification evidence differs by engine. The test suite combines independently published known-answer examples, pinned outputs for explicitly educational models, roundtrip and invalid-input checks, and corpus replay. Passing a model test does not establish historical authenticity.
- Independent examples include Schneier’s Solitaire vectors, historical manual examples for RS44 and German Double Playfair, and ACA examples for AMSCO.
- Some machine and codebook demonstrations are simplified models. Their limits and source editions must be read with the exhibit.
- The v0.6 replay baseline has 99,800 exact matches and 526 documented noisy or historical-variant exceptions among 100,326 records.
- Roundtrips establish consistency, not independent correctness. The public tests distinguish their evidence types.
Where an engine follows a specific historical convention (for example, the Four-square exhibit uses the ACA 25-letter I/J-merged alphabet rather than Wikipedia's Q-omitted example), the exhibit page documents that choice. The test suites are public in the GitHub repository if you want to inspect or re-run them.
Resources
Contact & Feedback
Open an issue on GitHub with questions, suggestions, or contributions.
You can also email systemslibrarian@gmail.com — corrections are especially welcome. If you can point to a source, that is ideal; if something simply looks wrong, say so anyway and it will be checked against the sources.