What is this web page primarily used for? Two things. First,
sometimes you get an email which wasn't decoded properly. If you want to clean that
email up, you paste it in the above box and press the appropriate decode button. As
to which button to press, just hover your mouse over each key and see if the pop-up
description matches what your data looks like. The second thing this page is
used for is to intentionally mess up some text -- either in a standard way
or in a non-standard way.
Is this data going over the internet? No. All the encoding
and decoding takes place entirely on your computer. The actual programming is part
of the web page and is run by the VBScript interpreter built in to Internet Explorer.
Absolutely no information is sent in or out of your computer. If you want, you can
even save this web page on your hard drive, disconnect from the internet, and still
Is this encryption actually secure? No, and more importantly,
no! It isn't secure, and it isn't encryption -- it's encoding. The difference
is that encoding is just a convenient way of representing something, while encryption is
meant to intentionally hide the data. For example, "Base-64"
encoding is done to allow messages and attachments to be sent over networks that were only
meant for plain text. It isn't meant to encrypt or hide the data, it's merely a conversion
to a different format.
Can this be made to at least act like encryption? Yes.
Encryption generally involves changing and re-ordering the data multiple times
and in multiple ways. By using several of the available encoding options available here,
you can minimally encrypt your data (safe from the average 8 year old or AOL user).
Any person who views the resulting
"encrypted" data will need to decode your message in the exact reverse order
of how you encoded it in order to see the original text. My suggestion is to use B64
(button 5) encoding to scatter the bits between bytes, use the byte-swapping functions
(buttons 7, 8, 9) to scatter the bytes within the message, then use an obscuring function
(buttons 3, 4, 6) to make the data appear less structured. You may want to do this
multiple times and throw in some of the data-padding functions (buttons *, 0, and #) to
hide the true length of your message. Additionally, because the B64 and HEX decoders
in this program will ignore unexpected characters, you can throw in random nonstandard
characters after those encodings to make your data look like something else. I recommend
using B64 with Word Wrap turned on as the final step to make it easy to copy and paste
the end result into any document.
Why the fake phone keypad? Well... For ordinary de-mangling of
improperly decoded email, it's a bother. However, for the second purpose of this
web page (intentionally messing up text for casual encryption), it's a help. A phone
keypad is probably the most compact way of entering text or numbers. This allows you
to easily remember the sequence you used to encode a file so you can later decode it
with the reverse sequence.
Why do buttons keep getting disabled? Due to a
side-effect of the Internet Explorer "textarea" used to display the
encoded and decoded text, if a carriage-return/linefeed pair (CRLF) is split
into separate CR and LF, the textarea will automatically convert both into separate
CRLF sequences. This corrupts the data and makes it impossible to recover the
intended text! To prevent this from happening, functions which move bytes
(buttons 7, 8, 9) and which could split CRLF pairs up are disabled if a CR or LF is present.
Functions which might generate CR or LF characters (buttons 1, 2, 3) are disabled if
using them would create a CR or LF. Button 9 gets disabled if the
data is not the correct length to perform unpadded block encoding. If
you pad the data, you will never have to add more than three characters before block
encoding is possible. FYI, the B64 decoder used here ignores all unexpected characters,
so it is always safe to pad or intersperse B64 data with non-B64-legal characters.
Can I steal the encoding and decoding functions used here? Sure! I've
placed all the code I wrote here in the public domain. That means
you can steal the functions, use them elsewhere, and give me no credit at all. Of course,
if someone else copyrighted one of the algorithms I used, you'll have to deal with them.