An interactive journey through 3,500 years of cryptography history.
Cryptographia is an educational web game featuring 16 progressive cryptographic puzzles, spanning from ancient Hebrew traditions to the digital age. Each challenge immerses the player in a real historical era and encryption system, with an immersive cyberpunk design and full bilingual support (๐ซ๐ท French / ๐บ๐ธ English).
- Open the site: anadema.github.io/Cryptographia
- Choose your language using the ๐ซ๐ท/๐บ๐ธ selector in the top-right corner
- Pick a challenge from the 16 available (in chronological order)
- Read the ๐ History of the code (hints are hidden in the text!)
- Solve the puzzle to obtain a secret flag
- Collect all 16 flags to become Code Master
You want to break the SHA-256 hashes, why not!
See Hacker Guide
| # | Era | Cipher | Concept |
|---|---|---|---|
| I | 1500 BC | Atbash โ | Alphabet inversion (AโZ, BโY...) |
| II | 500 BC | Scytale ๐ | Column transposition (Sparta) |
| III | 150 BC | Polybius Square โ | Coordinates in a 5ร5 grid (Greece) |
| IV | 50 BC | Caesar Cipher โ | Letter shift substitution (Rome) |
| V | 1586 | Vigenรจre Cipher โ | Polyalphabetic encryption (France) |
| VI | 1844 | Rail Fence โก | Zigzag transposition + Morse code (USA) |
| VII | 1854 | Playfair Cipher โ | 5ร5 grid + Greek alphabet coordinates (UK) |
| VIII | 1917 | XOR Cipher โ | Bitwise XOR operation (Cryptography) |
| IX | 1940 | Enigma โ | Rotor-based code breaking (Bletchley Park) |
| X | 1960 | Hexadecimal #๏ธโฃ | Base 16 encoding (Computing) |
| XI | 1963 | Binary Code ๐พ | ASCII / 8-bit encoding (Computing) |
| XII | 1980 | ROT13 ๐ | Caesar cipher with 13-position shift (Internet/Usenet) |
| XIII | 1985 | Steganography โ | Message hidden in image bytes (Digital era) |
| XIV | 1987 | Base64 ๐ง | Binary-to-text encoding (Web/MIME) |
| XV | 1991 | MD5 Hash ๐ | One-way fingerprint cracking with rainbow tables |
| XVI | 1994 | QR Code ๐ฑ | 2D barcode invented by Denso Wave (Japan) |
One of the oldest known ciphers from Hebrew tradition. The principle is radically simple: reverse the alphabet. AโZ, BโY, CโX... Mentioned in the Bible's Book of Jeremiah where "Sheshakh" is Atbash for "Babel".
Spartan generals wrapped a leather strip around a cylindrical rod called a scytale. The message was written horizontally, then the strip was unwound. Without the right rod diameter, the message was unreadable. Used famously by King Leonidas.
Greek historian Polybius arranged 25 letters in a 5ร5 grid. Each letter is identified by its (row, column) position. Used with torches on hills for long-distance communication, and later by prisoners tapping on cell walls.
Julius Caesar's deceptively simple system: shift each letter by a fixed number of positions. Reported by Suetonius. The famous "VENI VIDI VICI" message from his Gallic conquest is encoded with a shift of 3 (III in Roman numerals).
Blaise de Vigenรจre's polyalphabetic system. Unlike Caesar (fixed shift), Vigenรจre uses a secret keyword that modifies each letter differently. Nicknamed "le chiffre indรฉchiffrable" for 300 years until Babbage and Kasiski cracked it in the 19th century.
Letters are written in zigzag across multiple "rails", then read row by row. Combined with Samuel Morse's revolutionary code (dots and dashes) which enabled instant long-distance communication for the first time in history.
Charles Wheatstone's 5ร5 grid system, promoted by Lord Playfair. Used by the British Army during the Boer War and WWI. This challenge adds a twist: positions are encoded using Greek alphabet letters (ฮฑ=0, ฮฒ=1, ฮณ=2, ฮด=3, ฮต=4).
The fundamental operation of modern cryptography. XOR compares two bits: same โ 0, different โ 1. Self-inverse: applying XOR twice with the same key restores the original. Foundation of the unbreakable "one-time pad" encryption.
Nazi Germany's electromechanical rotor machine with 158 quintillion combinations. Cracked at Bletchley Park by Alan Turing's team using the "Bombe" machine. Estimated to have shortened WWII by 2 to 4 years.
Base 16 system using digits 0-9 and letters A-F. Two hex digits = one byte = one ASCII character. The compact language of computers, used in memory addresses, web colors (#FF0000), and forensic analysis.
ASCII standard adopted in 1963: every character receives a unique number (0-127) encoded in 8 bits (one byte). The foundation of all modern computing โ every file, message, and image is ultimately a sequence of 0s and 1s.
A Caesar cipher with a fixed shift of 13. Its unique property: applying it twice returns the original text (because 13 ร 2 = 26 = alphabet length). Popularized by Usenet for hiding spoilers and offensive content.
While the concept dates back to antiquity (Herodotus reported messages tattooed on slaves' scalps), modern digital steganography was born in 1985 with Gustavus Simmons' "Prisoners' Problem". The challenge: hide text in the raw bytes of a PNG image, invisible to the eye but discoverable with a hex editor.
Not encryption but an encoding scheme. Transforms binary data into 64 "safe" text characters (A-Z, a-z, 0-9, +, /). Invented for the MIME email standard to send binary attachments through text-only protocols.
Ronald Rivest's 128-bit hash function. One-way: you can't reverse it. But "rainbow tables" allow brute-forcing common passwords. This challenge simulates an attacker cracking a hash from a candidate word list โ illustrating why MD5 is now considered broken.
Invented by Masahiro Hara at Denso Wave (Toyota subsidiary) for automotive parts tracking. Stores data in two dimensions with error correction (readable even when 30% damaged). Today ubiquitous and used in modern steganography.
Designed for non-technical trainees in cybersecurity awareness contexts. Challenges are accessible without prior computer knowledge โ each puzzle teaches a historical cryptography concept while testing logic and deduction. Perfect for:
- ๐ข Corporate cybersecurity training sessions
- ๐ Educational workshops on cryptography history
- ๐ฎ Personal entertainment for puzzle enthusiasts
- ๐ง Logic and deduction practice
- ๐ Full bilingual support โ Switch between French ๐ซ๐ท and English ๐บ๐ธ anytime
- ๐ History popups with era miniatures and subtle in-text hints
- ๐ Flag collection system โ each solved challenge reveals a historical treasure
- ๐ URL-encoded session โ progress is saved and shareable (Base64 + XOR encoding)
- ๐ฑ Mobile-first design โ optimized for iPhone/Android with responsive layouts
- ๐จ Cyberpunk aesthetics โ neon glows, glassmorphism, animated background symbols
- ๐ Helper links โ online decoders (dcode.fr, hexed.it, rapidtables, base64decode, etc.)
- ๐ Security โ input sanitization, no localStorage, no eval(), no external API for game logic
- โฟ Accessibility โ interactive widgets (Enigma rotors, column selector, etc.) for hands-on learning
- Fork or push this repo to your GitHub account
- Go to Settings โ Pages โ Source โ GitHub Actions
- The
.github/workflows/deploy.ymlworkflow auto-deploys on every push tomain - Your site will be available at
https://your-username.github.io/Cryptographia
No dependencies, no build step. Just open index.html in a browser.
# Or serve it with a local server
python3 -m http.server 8000
# โ http://localhost:8000- Single HTML file โ all code in one
index.html - React 18 via CDN (unpkg)
- Tailwind CSS via CDN
- Babel standalone for in-browser JSX compilation
- React Context API for bilingual support (LangContext)
- Google Fonts โ Orbitron, Rajdhani, Share Tech Mono
- Canvas API for image generation (steganography challenge)
- Wikipedia API for fetching historical images dynamically
- Zero server dependencies โ 100% static, fully client-side
cryptographia/
โโโ .github/
โ โโโ workflows/
โ โโโ deploy.yml # GitHub Actions for Pages
โโโ .nojekyll # Bypass Jekyll processing
โโโ index.html # Complete application (all 16 challenges)
โโโ README.md # This file
โโโ LICENSE # Apache 2.0 License
The application supports full bilingual rendering (French/English) through:
- React
LangContextprovider wrapping all views - Translation tables for UI elements (
T.endictionary) - Per-challenge
en:{}objects withnm,cv,fm,hi,lorefields - Helper functions (
tr,cn,cc,cf,ch_,cl) for clean conditional rendering - Persistent language selection during the session
Each challenge has a unique color identity:
| Color | Challenges |
|---|---|
| ๐ฃ Indigo (#6366f1) | Atbash |
| ๐ต Cyan (#00f0ff) | Scytale |
| ๐ข Green (#00ff41) | Polybius |
| ๐ฉท Pink (#ff2d95) | Caesar |
| ๐ก Gold (#ffd700) | Vigenรจre |
| ๐ Orange (#ff6b00) | Rail Fence |
| ๐ฃ Purple (#a855f7) | Playfair |
| ๐ต Blue (#3b82f6) | XOR |
| ๐ด Red (#ef4444) | Enigma |
| ๐ฃ Violet (#8b5cf6) | Hexadecimal |
| ๐ข Emerald (#10b981) | Binary |
| ๐ก Amber (#f59e0b) | ROT13 |
| ๐ท Cyan (#06b6d4) | Steganography |
| ๐ฉท Pink (#ec4899) | Base64 |
| ๐ด Dark Red (#dc2626) | MD5 |
| ๐ข Teal (#14b8a6) | QR Code |
- The Enigma challenge uses simplified single-rotor logic (not the full historical Enigma)
- Wikipedia images require an internet connection on first load
- The QR Code challenge requires either a mobile device or an online QR reader
Apache 2.0 โ Free for use, modification, and distribution.
- Historical content: research from Wikipedia, dcode.fr, and academic sources
- Design inspiration: cyberpunk aesthetics, retro-futurism
- Cryptographic algorithms: implementations following standard specifications
- Wikipedia API for historical imagery
- QR Code generation via api.qrserver.com
Cryptographia ยท MMXXVI ยท From Hebrew traditions to the digital age
๐ซ๐ท [Version franรงaise disponible dans l'application โ cliquez sur ๐ซ๐ท]