Violet (2019-03-10)

Text scrambler.

Violet scrambles text by shuffling all characters and using ANSI
escape sequences to record their positions.  To scramble a file:

   ./violet original.txt > scrambled.txt

To scramble a file, and watch how the characters are shuffled,
assuming that the original file fits in your terminal window:

   ./violet original.txt | ruby violet.c

To unscramble a file:

   ./violet < scrambled.txt > plaintext.txt

Another way to unscramble the same file, assuming that original file
fits in your terminal window:

   cat scrambled.txt

To scramble a file to multiple layers:

   ./violet original.txt layer1.txt layer2.txt ...

To reassemble the layers:

   cat layer1.txt layer2.txt ... | ./violet

One possible application is to scramble a file into multiple layers,
and then unscramble each layer separately and print them on
transparencies.  This is a form of visual cryptography.

Violet won the "Most in need of transparency" award in IOCCC 2019.

Based on Violet Evergarden from the series "Violet Evergarden".

-- -