A set of tools for pen-and-paper ciphers

Jason K. MacDuffie ad0a746052 fix bug where three args could pass including a file name 4 vuotta sitten
.gitignore f2ba8aa820 start work on the graphical application 8 vuotta sitten
LICENSE ff2f354216 I have completely restarted this project. All of the code is new, although I used the old code as reference. 8 vuotta sitten
Makefile d8709e8b27 add uninstall to makefile 8 vuotta sitten
README.md b50edf61c9 add info about the command line program in README 4 vuotta sitten
autokey.scm b792d16882 Convert into an R7RS library 8 vuotta sitten
caesar.scm b792d16882 Convert into an R7RS library 8 vuotta sitten
cipher-ops.scm b168bb5f60 Make print-letters return a string instead of printing 8 vuotta sitten
cipher.sld b168bb5f60 Make print-letters return a string instead of printing 8 vuotta sitten
ciphermytext-cli.scm ad0a746052 fix bug where three args could pass including a file name 4 vuotta sitten
cmt.scm 247f6c1118 continue adding widgets to cmt 8 vuotta sitten
cryptogram-game.scm 61c8a0e4b5 fix check alpha issues 4 vuotta sitten
lib-only-install.sh 3316872b01 rename automytext to ciphermytext 4 vuotta sitten
monokey.scm 666f4f7b4e allow monokey with a shorter key 4 vuotta sitten
queue.body.scm 08d5136cab start organizing project with makefile in preparation of javafx 8 vuotta sitten
queue.sld ab46e8bdd8 start a migration to chicken scheme 8 vuotta sitten
reptkey.scm b792d16882 Convert into an R7RS library 8 vuotta sitten

README.md

CipherMyText

CipherMyText is a set of tools for enciphering messages. Previously the tools were written in Python and only worked with the autokey cipher, but the tools have been ported to Scheme and are designed in a more modular way to allow them to be used with a wide array of mono- and polyalphabetic pen-and-paper ciphers.

Dependencies

Although the GUI application requires Chicken and libui, the suite itself is written in portable R7RS Scheme and comes with a CLI implementation as well. View your implementation documentation for details about installing R7RS libraries.

Usage

Examples of the R7RS library usage:

> (import (macduffie cipher))
> (apply-cipher caesar-encipher #t "Hello, world!" 1)
< "Ifmmp, xpsme!"
> (apply-cipher caesar-decipher #t "Ifmmp, xpsme!" 1)
< "Hello, world!"
> (apply-cipher mono-encipher #t "The pen is mightier than the sword." "DONUTABCEFGHIJKLMPQRSVWXYZ")
< "Rct ltj eq iebcretp rcdj rct qwkpu."
> (apply-cipher mono-decipher #t "Rct ltj eq iebcretp rcdj rct qwkpu." "DONUTABCEFGHIJKLMPQRSVWXYZ")
< "The pen is mightier than the sword."

CLI implementation:

$ ciphermytext -p autokey 'This is an example of a sentence I woud like to encipher.' TRASH
Myik pl hv wfsmcpb or p dibyefgr B abwh teyy wz mxgbdlrt.
$ ciphermytext -p -d autokey 'Myik pl hv wfsmcpb or p dibyefgr B abwh teyy wz mxgbdlrt.' TRASH
This is an example of a sentence I woud like to encipher.

Notice

These ciphers are generally not appropriate for real world strong cryptography. There are well known techniques for breaking most pen-and-paper ciphers, except the one-time-pad and stream ciphers. User beware: this software should be used as a toy and nothing more.

License

Code is licensed under GPLv3 or later. See LICENSE for details.