Skip to content

fandau1/kidscipher

Repository files navigation

NPM Version

Kidscipher Logo

kidscipher

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.

Install

npm install kidscipher

Usage

import { PolandCrossCipher } from 'kidscipher';

const cipher = new PolandCrossCipher();

const encoded = cipher.encode('HELLO');
console.log(encoded);

const decoded = cipher.decode(encoded);
console.log(decoded); // HELLO

Custom font

The 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>

Supported Ciphers

  • 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

✅ - implemented and showcased in docs 🔄 - implemented, but not showcased in docs ❌ - not implemented

Development

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.

Setup

  1. Install dependencies:

    npm install
  2. Prebuild fonts:

    npm run prebuild-fonts
  3. Build the package:

    npm run build

Local testing in another project

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 install in the new project. This will create a symlink to the ../dist folder, so any updates you rebuild in kidscipher will be immediately available in the new project without reinstalling, as long as the folder structure remains the same.

Contributing

Contributions are welcome!

About

Kidscipher is a npm library for encode or decode educational and fun ciphers. It primarily provides ciphers that can be decrypted as a game and includes a custom KidscipherFont that allows working with graphical ciphers and symbols.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors