Kidscipher is an npm library for encoding and decoding educational and fun ciphers. It mainly provides ciphers that can be solved as a game and also includes a custom font Kidscipher, which makes it possible to work with graphical ciphers and symbols.
npm install kidscipherimport { PolandCrossCipher } from 'kidscipher';
const cipher = new PolandCrossCipher();
const encoded = cipher.encode('HELLO');
console.log(encoded);
const decoded = cipher.decode(encoded);
console.log(decoded); // HELLOThe font allows you to render encoded text as graphical symbols (necesary only for graphical outputs). The font is automatically included in the package, so you don’t need to import it separately.
<p style="font-family: Kidscipher;">{encoded}</p>- Substitution Cipher
- ✅ Letter Number Cipher (A1Z26)
- ✅ Shift Cipher
- ✅ Shift Alphabet
- ✅ ABCD Shift 3-rotor
- ❌ Atbash
- ✅ MorseCode
- ✅ Poland Cross (need font)
- ✅ Hebrew Cross (need font)
- ✅ Small Cross (need font)
- ✅ Different Cross (need font)
- ❌ Square Cross (need font)
- ❌ Knights Templar Cross (need font)
- ❌ Musical Code Musical code paper, scout wiki
- ✅ Mobile
- ✅ Chess
- ✅ Cipher table - ADFGVX/ADFGX
- ✅ Fractions (need font)
- ✅ Spider-Net Cipher
- ✅ Chinese Cipher (need font)
- ❌ Playfair
- ❌ Vigenere
- ❌ Binary
- ❌ Brail
- ❌ Sign Language
- ❌ Semaphore Flag
- Trasposition ciphers
- ❌ Route cipher (Hadovka)
- ❌ Reverse Text
- ❌ Word Reversal Cipher
- ❌ Rail fence
- ❌ Scytale
- ❌ Anagram Cipher
- Steganography ciphers
- Null Cipher
- ❌ Case Steganography
- Null Cipher
✅ - implemented and showcased in docs 🔄 - implemented, but not showcased in docs ❌ - not implemented
The main focus of the project is to provide a lightweight, dependency-minimal library with high customization for ciphers.
All ciphers are text-based (even the graphical ones).
The graphical part is powered by the Kidscipher font, which is automatically generated by the script scripts/generate-font.
This generator maps symbols to Unicode, so every graphical cipher is just normal text rendered with the custom font.
-
Install dependencies:
npm install
-
Prebuild fonts:
npm run prebuild-fonts
-
Build the package:
npm run build
To try the package in a different project without publishing to npm, you can link the built dist folder directly:
{
"dependencies": {
"kidscipher": "file:../dist"
}
}Note: After adding the dependency, you must run
npm installin the new project. This will create a symlink to the../distfolder, so any updates you rebuild inkidscipherwill be immediately available in the new project without reinstalling, as long as the folder structure remains the same.
Contributions are welcome!
