UtiliKey Documentation

[UtiliKey window]

Contents

Introduction

UtiliKey takes a given bit of text, and basically plays with it in various ways.

Software Requirements

UtiliKey requires .Net Framework 4.0 (it uses the full framework, rather than the Client framework, due to using the HttpUtility class for URL-encoding and HTML-entity-encoding), and Windows 7 on up, Windows Vista SP1 or later, or Windows XP SP3. It may also function on Macintosh/Linux/other operating systems using Mono; this is currently largely untested, although MoMA 2.8 showed no problems except for the autocomplete function, which isn't implemented in Mono; it should still work properly without crashing regardless. UtiliKey.exe may be placed anywhere, with or without any of the accompanying files.

How To Use

The process is simple: type or copy a bit of text into the upper text-box, and select the form of encoding/transformation in the drop-down list. Click on the "Encode" button to encode or transform the text; the encoded version will appear in the lower text-box. If applicable, you may type or copy previously-encoded text into the text-box, and click "Decode" to reverse the process. Binary functions assume the text is in UTF-8.

ROT13

ROT13 is a simple Caesar cipher: the first half of the alphabet is mutually replaced by the other half of the alphabet — in other words, you "rotate" the alphabet 13 steps. It's for something you want hidden, but not hidden too well; it's been called the equivalent of "magazines which print the puzzle-solutions upside-down." You can get lotsa geek cred for being able to read it regardless. It is also what's known as a "Kama Sutra cypher," because the process for encoding it is the same as decoding it.

ROT13 ignores (most) non-letter characters, and simply includes them intact.

Input:

The quick brown fox jumps over the lazy dogs & cats 100%! ... ♥ ⑨
<http://dizzy.pestermom.com/?p=codes>

Output:

Gur dhvpx oebja sbk whzcf bire gur ynml qbtf & pngf 100%! ... ♥ ⑨
<uggc://qvmml.crfgrezbz.pbz/?c=pbqrf>

Morse Code

Probably one of the most famous codes out there. This version renders dots as periods and dashes as underscores. Letters are separated by spaces, and words are separated by slashes. All other non-alphanumeric characters are preserved.

Note: because Morse Code does not differentiate between uppercase and lowercase letters, all letters are lowercase when you decode them.

Input:

The quick brown fox jumps over the lazy dogs & cats 100%! ... ♥ ⑨
<http://dizzy.pestermom.com/>

Output:

_ .... . / __._ .._ .. _._. _._ / _... ._. ___ .__ _. / .._. ___ _.._ / .___ .._ __ .__. ... / ___ ..._ . ._. / _ .... . / ._.. ._ __.. _.__ / _.. ___ __. ... / ._... / _._. ._ _ ... / .____ _____ _____ % ! / ._._._ ._._._ ._._._ / ♥ / ⑨
< .... _ _ .__. ___... _.._. _.._. _.. .. __.. __.. _.__ ._._._ .__. . ... _ . ._. __ ___ __ ._._._ _._. ___ __ _.._. >

URL Encoding

Encodes strings such that it is safe to enclude them in a web-URL; certain characters are considered improper to put in a URL, and might mess things up if you don't deal with them. The normal version only encodes non-URL safe characters; path-safe includes any uncommon character, including those which might be expected to be part of a URL, in case you might want to use an entire string in a URL's arguments; and the every character version does what it says it does.

Input:

The quick brown fox jumps over the lazy dogs & cats 100%! ... ♥ ⑨
<http://dizzy.pestermom.com/?p=codes>

Normal Output:

The%20quick%20brown%20fox%20jumps%20over%20the%20lazy%20dogs%20&%20cats%20100%!%20...%20%e2%99%a5%20%e2%91%a8%0d%0a<http://dizzy.pestermom.com/?p=codes>

Path-Safe Output:

The%20quick%20brown%20fox%20jumps%20over%20the%20lazy%20dogs%20%26%20cats%20100%25!%20...%20%e2%99%a5%20%e2%91%a8%0d%0a%3chttp%3a%2f%2fdizzy.pestermom.com%2f%3fp%3dcodes%3e

Every-Character Output:

%54%68%65%20%71%75%69%63%6b%20%62%72%6f%77%6e%20%66%6f%78%20%6a%75%6d%70%73%20%6f%76%65%72%20%74%68%65%20%6c%61%7a%79%20%64%6f%67%73%20%26%20%63%61%74%73%20%31%30%30%25%21%20%2e%2e%2e%20%e2%99%a5%20%e2%91%a8%0d%0a%3c%68%74%74%70%3a%2f%2f%64%69%7a%7a%79%2e%70%65%73%74%65%72%6d%6f%6d%2e%63%6f%6d%2f%3f%70%3d%63%6f%64%65%73%3e

HTML Entities

Converts a set of characters so that you can display them literally on a web page, without having to worry about the web browser getting confused by ampersands or < and > tags.

Note: the program can decode HTML entities such as "&hearts;" for ♥, but when encoding, it will simply turn it into the numerical unicode equivalent.

Input:

The quick brown fox jumps over the lazy dogs & cats 100%! ... ♥ ⑨
<http://dizzy.pestermom.com/>

Output:

The quick brown fox jumps over the lazy dogs &amp; cats 100%! ... &#x2665; &#x2468;
&lt;http://dizzy.pestermom.com/&gt;

Replacing newlines with <br/> is an exercise left to the user.

Base64

It's like this ...

Every character in any text system is made out of one or more octet bytes (that is, eight bits). A byte can count from 0 to 255 for a total of 256 different combinations of bits. Base64 divides these strings into groups of six bits, which go from 0 to 63 (for a total of 64), with every three bytes divided into four Base64 characters; each of those 64 possibilities has its own character assigned to it, and it spits out the (visibly longer) string. If the number of bytes doesn't divide evenly into six bits, the string is padded with extra = signs.

Input:

The quick brown fox jumps over the lazy dogs & cats 100%! ... ♥ ⑨
<http://dizzy.pestermom.com?p=codes>

Output:

VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ3MgJiBjYXRzIDEwMCUhIC4uLiDimaUg4pGoDQo8aHR0cDovL2Rpenp5LnBlc3Rlcm1vbS5jb20/cD1jb2Rlcz4=

MD5 Hash

According to Wikipedia, the MD5 Message-Digest Algorithm is a widely-used cryptographic hash function that produces a 128-bit (16-byte or 32-hex-digit) hash value. It isn't the best thing to use for security purposes, but it's still useful in a number of ways. Note that it is not possible to get the original data back once it has been processed into a hash; all you can do is take some data you want to test, process that, and compare it to an existing hash.

Input:

The quick brown fox jumps over the lazy dogs & cats 100%! ... ♥ ⑨
<http://dizzy.pestermom.com>

Output:

e0763322a8798de5bfb765d58d51127b

Fullwidth Characters

In computing involving the CJK (Chinese, Japanese, and Korean) languages, characters are classified as either "fullwidth" or "halfwidth"; the name comes from the fact that, in fixed-with fonts, a halfwidth character is half the width of a fullwidth character.

Now, ordinary letters of the English alphabet are technically halfwidth characters, whereas all CJK characters are fullwidth. However, in the event that English letters are required to be the same width as CJK characters (or vice versa, in some cases), there is a set of Unicode characters consisting of fullwidth versions of English characters and halfwidth versions of a small subset of CJK characters. "Encode" will convert all possible letters (English text, halfwidth CJK characters) into fullwidth characters, and "Decode" will convert all possible letters (fullwidth text, Japanese Katakana letters, etc) into halfwidth characters (may vary depending on your browser's display settings).

Input:

The quick brown fox jumps over the lazy dogs. That'll be 50¢, please! ♥ ⑨ ネコ

Output:

The quick brown fox jumps over the lazy dogs. That'll be 50¢, please! ♥ ⑨ ネコ

Byte Encoding

This encoding system simply takes every character, divides it into the individual bytes that make up each character, and presents the numeric equvalent in either binary ("L" = "01001100"), octal (base 8 or 0-7; "L" = "114"), decimal ("L" = "076"), or hexadecimal (base 16, or 0-9 A-F; "L" = "4c").

There are two different versions: the regular methods, which convert the text into a sequence of UTF-8 byte values; and the code-point methods, which convert each character in the string to a UTF-32 code-point (that is, a value which is between 0 and 1114111, depending on its Unicode digit value). The example text has the output values for the heart and the circle-9 bolded.

Input:

The quick brown fox jumps over the lazy dogs & cats 100%! ... ♥ ⑨
<http://dizzy.pestermom.com>

Hexadecimal Output:

54 68 65 20 71 75 69 63 6b 20 62 72 6f 77 6e 20 66 6f 78 20 6a 75 6d 70 73 20 6f 76 65 72 20 74 68 65 20 6c 61 7a 79 20 64 6f 67 73 20 26 20 63 61 74 73 20 31 30 30 25 21 20 2e 2e 2e 20 e2 99 a5 20 e2 91 a8 0d 0a 3c 68 74 74 70 3a 2f 2f 64 69 7a 7a 79 2e 70 65 73 74 65 72 6d 6f 6d 2e 63 6f 6d 3e

Hexadecimal Code Point Output:

54 68 65 20 71 75 69 63 6b 20 62 72 6f 77 6e 20 66 6f 78 20 6a 75 6d 70 73 20 6f 76 65 72 20 74 68 65 20 6c 61 7a 79 20 64 6f 67 73 20 26 20 63 61 74 73 20 31 30 30 25 21 20 2e 2e 2e 20 2665 20 2468 20 0d 0a 3c 68 74 74 70 3a 2f 2f 64 69 7a 7a 79 2e 70 65 73 74 65 72 6d 6f 6d 2e 63 6f 6d 2f 3f 70 3d 63 6f 64 65 73 3e

Changelog

1.0.0.0: 3 August, 2011

1.1.0.0: 21 March, 2012

1.2.0.0: 27 October, 2012

1.3.0.0: 17 March, 2013

1.4.0.0: 26 March 2014

Plans for the future: Add an options menu with settings like fonts, size, what characters to use for Morse code, other options like saving text/loading from files, and so forth ...

License

UtiliKey is released under the BSD License:

Copyright © 2011-2014 by No Worry NeverFear. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

THIS SOFTWARE IS PROVIDED BY NO WORRY NEVERFEAR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NO WORRY NEVERFEAR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.