"The heart of the discerning acquires knowledge, for the ears of the wise seek it out." β Proverbs 18:15
Exploring 3,900+ years of encryption, cryptanalysis, and hidden history.
The Cipher Museum is part digital exhibit, part cipher playground, and part codebreaking classroom exploring 3,900+ years of encryption, cryptanalysis, and hidden history across 139 exhibits and 13 exhibit halls. Every cipher exhibit ships with a fully interactive encrypt/decrypt demo (or, for unsolved and visualization-only exhibits, a hand-built widget). Modern cryptography uses more than ciphers β secure systems combine key exchange, encryption, and hashing.
- Added a premium six-stage cryptography evolution strip to timeline.html, positioned above the historical event timeline.
- Sequence is explicit and ordered: Ancient β Classical β Mechanical β Modern β Symmetric (AES) β Asymmetric (Public-Key).
- Implemented mathematically even horizontal spacing, straight directional connectors, and clear arrowheads.
- Enforced strict two-line node labels, including exact wording for:
- AES / Modern Symmetric Encryption
- Public-Key Cryptography / Asymmetric Encryption
- Standardized icon style using consistent inline SVG sizing and stroke weight.
- Added subtle exhibit-style glow, responsive mobile behavior, and reduced-motion support.
- Historical Context β When, where, who used it, why
- How It Works β Encryption steps, diagrams, interactive demo
- How It Was Broken β The specific technique, with context
- What It Teaches Modern Crypto β The direct line from this cipher to AES/RSA
The 139-exhibit collection includes 83 working cipher engines plus ~28 hand-built widgets β 111 of the 139 exhibits ship a fully interactive encrypt/decrypt demo, all built in vanilla JavaScript with no frameworks or build tools. The remaining exhibits are codebreaker biographies, historical context pages (e.g. Bletchley Park, Cabinet Noir), and unsolved or visualization-only widgets (e.g. Voynich, Dorabella, Phaistos Disc) where no plaintext mapping is known.
Type a message, set a key, and watch the cipher work in real time. Demos are dynamically generated by js/demo-loader.js from the engine implementations in js/ciphers/all-engines.js, and the same engines power the Codebreaker's Workbench.
For a sortable, filterable view of every cipher system in the museum (era, type, security, hall, solved status, key method) see the Cipher Comparison Table. For the full 139-exhibit roster including biographies and context pages, see the Museum Map.
- Codebreaker's Workbench β A unified hands-on lab that exposes all 83 cipher engines behind one consistent interface. Pick any cipher from the dropdown, paste your text, set a key (or accept the default), and encrypt/decrypt instantly. Beyond the per-exhibit demos it adds:
- Frequency analyser β letter-frequency histogram with Index of Coincidence and Chi-square against English, useful for detecting monoalphabetic vs. polyalphabetic ciphertext at a glance.
- Kasiski / period detector β repeated-trigram spacing analysis for breaking VigenΓ¨re-family ciphers.
- N-gram & entropy panel β bigram/trigram counts and Shannon entropy for distinguishing transposition (preserves frequencies) from substitution (alters them).
- Side-by-side Encrypt/Decrypt panes with copy-to-clipboard and a swap button so you can iterate on a key without retyping ciphertext.
- Same engine source as the exhibits β the workbench pulls from js/ciphers/all-engines.js, so anything you reproduce here matches every demo on the site.
- Site Search β Search across all 139 exhibits, 13 exhibit halls, codebreaker biographies, cryptanalysis techniques, and the timeline. Index-driven, no backend, deep-link via
?q=. - Cryptanalysis Techniques β 10 interactive techniques: frequency analysis, Kasiski examination, index of coincidence, crib dragging, known-plaintext attack, hill climbing, simulated annealing, stepping-switch cryptanalysis (Purple), HMM/SMT decoding (Copiale), and Chaocipher reconstruction.
- Cipher Challenges β 10 progressive puzzles from Caesar to Enigma with hints and solutions.
- Timeline β Interactive 3,900+-year history with era filtering, scroll-spy, and 50+ clickable exhibit events.
- Comparison Table β Sortable, filterable table comparing the museum collection by type, era, hall, security level, solved status, and key method.
- Cipher Flow Explorer β Visual relationship map between cipher families.
- Museum Map β Architectural floor plan with all exhibit halls and cipher exhibits.
- Guided Tours β Structured learning paths through the collection.
- Glossary β Comprehensive cryptography term reference.
- Further Reading β Canon references, journals, and scholar/source index.
- Community β Discussion space for cipher enthusiasts.
git clone https://github.com/systemslibrarian/cipher-museum
cd cipher-museum
python3 -m http.server 8000 # or just open index.htmlNo build tools. No framework. No dependencies beyond Google Fonts. Pure HTML + CSS + Vanilla JavaScript. GitHub Pages ready.
cipher-museum/
βββ index.html β Entrance Hall (hero + 10 hall cards)
βββ museum-map.html β Interactive floor plan with all exhibits
βββ timeline.html β 3,900+ year timeline with era filtering & scroll-spy
βββ comparison.html β Sortable comparison table across the collection
βββ challenges.html β 10 progressive cipher challenges
βββ glossary.html β Cryptography glossary
βββ cryptanalysis.html β Cryptanalysis Techniques (7 interactive techniques)
βββ cipher-flow.html β Visual cipher family relationships
βββ modern.html β Modern Cryptography overview
βββ favicon.svg β Gold cipher wheel icon
βββ css/
β βββ museum.css β Complete design system (~400 rules)
βββ js/
β βββ nav.js β Navigation system (sticky nav, hamburger, ARIA)
β βββ demo-loader.js β Dynamic demo UI generator for all cipher pages
β βββ ciphers/
β βββ all-engines.js β 83 cipher engine implementations
βββ halls/ β 13 exhibit halls
β βββ ancient.html β Hall I: World Origins of Cryptography
β βββ substitution.html β Hall II: Classical Substitution
β βββ polyalphabetic.html β Hall III: Polyalphabetic Revolution
β βββ transposition.html β Hall IV: Transposition & Fractionation
β βββ military.html β Hall V: Military & Spy Ciphers
β βββ civil-war.html β Special Exhibition: Civil War
β βββ machines.html β Hall VI: Mechanical Machines
β βββ puzzle.html β Hall VII: Puzzle & Novelty
β βββ unbreakable.html β Hall IX: The Unbreakable
β βββ codebreakers.html β Special Exhibition: Hall of Codebreakers
βββ ciphers/ β 139 exhibit pages
β βββ caesar.html β with interactive demo + SVG wheel diagram
β βββ enigma.html β with rotor wiring SVG diagram
β βββ vigenere.html β with tabula recta SVG + Kasiski analysis
β βββ playfair.html β with key square builder SVG
β βββ [130+ additional exhibits]
βββ tours/ β Guided learning paths
βββ community/ β Community discussion pages
βββ tests/
βββ test-all-engines.js β Engine roundtrip & known-answer tests
βββ test-deep-ciphers.js β Edge cases & stress tests
| Element | Value |
|---|---|
| Aesthetic | Smithsonian Dark / Scholarly Gold |
| Display | Cinzel (serif) |
| Body | Cormorant Garamond (serif) |
| Code | JetBrains Mono (monospace) |
| Background | #060608 with subtle radial gold gradients |
| Accent | #C9A84C (gold) with 6 tonal variants |
| Text | #EDE5D4 (headings), #C8C0B0 (body), #ACA4B4 (labels) |
- WCAG AA contrast ratios on all text
- Skip links on every page
- ARIA labels on navigation, demos, and interactive elements
- 44px minimum touch targets on all interactive elements
prefers-reduced-motionsupport- Keyboard navigation throughout
aria-hiddenon decorative SVGs
- Unique meta descriptions on every page
- Open Graph + Twitter cards
- Canonical URLs
- XML sitemap (54+ pages)
- Structured data (JSON-LD)
- Custom 404 page
The museum ships with eight test harnesses, all green. They cover everything from the cipher engines themselves to the rendered DOM a visitor actually clicks on, plus a local link checker that verifies every relative href/src resolves.
# One-time setup (only needed for the demo-page simulator)
npm install
# Run any suite individually β¦
node tests/test-all-engines.js # 435 β engine roundtrip & known-answer tests across 83 engines
node tests/test-deep-ciphers.js # 238 β edge cases & stress tests
node tests/test-comprehensive.js # 1836 β cross-cipher invariants across the collection
node tests/test-accessibility.js # 1720 β ADA / WCAG audit across 172 pages
node tests/test-mobile.js # 519 β responsive / mobile audit across 172 pages
node tests/test-structural.js # 1725 β structural / framing audit across 172 pages
node tests/test-demo-pages.js # 783 β end-to-end JSDOM simulation of every interactive demo
node tests/test-local-links.js # 4710 β local href/src link checker across 172 HTML files
# β¦ or via npm scripts
npm run test:engines
npm run test:deep
npm run test:comprehensive
npm run test:a11y
npm run test:mobile
npm run test:structural
npm run test:demos
npm run test:links
npm test # runs every suite end-to-endtest-demo-pages.js is the strongest correctness proof: it loads every ciphers/*.html page in JSDOM with the real scripts inlined, lets js/demo-loader.js build the demo UI, then clicks the actual on-page Encrypt and Decrypt buttons and verifies the ciphertext roundtrips back to the original plaintext through the rendered DOM β exactly what a visitor sees. Hand-built pages (Caesar, Playfair, VigenΓ¨re, Zodiac) get dedicated assertions against canonical KATs (Caesar shift-3 β WKHTXLFNEURZQIRA, VigenΓ¨re LEMON β LXFOPVEFRNHR, Playfair MONARCHY decode, Zodiac Z408 reveal).
MIT License β free to use, fork, and build upon.
Built to honor the brilliant, flawed, and often fatal history of human secrecy.