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 年之前 | |
---|---|---|
.gitignore | 8 年之前 | |
LICENSE | 8 年之前 | |
Makefile | 8 年之前 | |
README.md | 4 年之前 | |
autokey.scm | 8 年之前 | |
caesar.scm | 8 年之前 | |
cipher-ops.scm | 8 年之前 | |
cipher.sld | 8 年之前 | |
ciphermytext-cli.scm | 4 年之前 | |
cmt.scm | 8 年之前 | |
cryptogram-game.scm | 4 年之前 | |
lib-only-install.sh | 4 年之前 | |
monokey.scm | 4 年之前 | |
queue.body.scm | 8 年之前 | |
queue.sld | 8 年之前 | |
reptkey.scm | 8 年之前 |
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.
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.
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.
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.
Code is licensed under GPLv3 or later. See LICENSE for details.