Theta Pi Encryption System Manual

2. The general interface 
2.1 The Main Menu 
2.2 Enc/Dec options 
2.3 What's going on when the thing is running? 
3. ENCPROSB - the original algorythm 
3.1 how to enter data and enryption codes 
3.2 what happens 
3.3 how to use encrypted material 
4. ENCPROS1 - the cryptogram algorythm 
4.1 How to get to algorythm 
4.2 algorythm options 
4.3 how to use output 
5. ENCPROS2 - the simple shift 
5.0 WARNING - this algorythm is for novelty purposes only and is not a secure algorythm 
5.1 how to use this algorythm 
5.2 how to use output 
6. ENCPROS3 - the list encrypt system 
6.1 how to get to this algorythm
6.2 overview of options 
6.3 how enclist and declist works 
6.4 how to use output 
7. PICPROS 1 & 2 - graphical extensions to list encryption 
7.1 what they are 
7.2 what you need to do before using them
7.3 how to use them 
7.4 how to use their output 
8. ENCPROSP - another graphical extension to list encrypt 
9. Credits, acknowledgements, etc. 
APPENDIX A - Writing your own algorithms and the ADK

2. The General Interface

The general interface is what you will use to interface with most of the algorithms available for the
encryption system.  The bulk of it, however, is comprised in the program's main menu.  To start using
the encryption system, run NUENCODE, which is the main program.  The encryption system will not work
correctly if one of the other programs are run instead.

2.1 The Main Menu

After the opening introduction screen, you will be faced with a menu called STEPS.  It has six
options: ENTER TEXT, GENERATE [A], ENCRYPTION, DECRYPTION, READ MSG/QUIT, and v1.0b.

2.1.1 the ENTER TEXT option

This is the option to use to enter the text you want to encrypt or the encrypted text (or 'string')
that you want to decrypt.  Especially for encrypted text, the characters must be entered exactly as
written.

After entering this command, you will be faced with a screen that looks like this:

ALPHANUMERIC + .,-?/*+()¼uvw^e TEXT:

The top two lines tell you mwhat you can enter into the input below.  You can enter any standard
upper-case alphabetical characters (using the ALPHA key) including the theta character, the numbers
0-9, and the other characters listed, including lower-case u,v,w, and e.  You may enter any length of
message you want, but it is inadvisable to enter anything greater that 255 characters while using some
of the options, and if your calculator is fully loaded, too big of a message may cause a memory error.
 It takes 2.253 seconds to encrypt or decrypt each character.  After entering your message, the
program will display how many characters the message it and how long it will take to encrypt it.

2.1.2 the GENERATE [A] option

This is used to genrate sets of encryption keys for the standard encryption algorithm, and creates 20
different sets in [A].  More on this later.

2.1.3 the ENCRYPT and DECRYPT options

Once you are ready to run the program, choose ENCRYPT for encrypting your regular text and DECRYPT for
decrypting an encrypted string.  Note that you must have entered your text before using these options.

2.1.4 the READ MSG option

This option exits the program.  upon exiting, you will see this display:

COPYRIGHT 1998 ؽ SOFTWARE a string of text

The string of text is either an encrypted stirng or your decrypted message, depending on which option
you chose.  If it is longer than 16 characters, there will be a ... at the end of it.  Use the <> keys
to move back and forth through the string.

2.1.5 the v1.0b option

This displays product and contact information.

2.2 Encryption and Decryption options

When you choose either ENCRYPT or DECRYPT in the main menu, you will be presented with three options:
ENTER VALUES, USE MATRIX, or CODES IN ALG.  If you are using the standard or simple shift algorithms,
you would choose one of the first two options to define your encryption keys.  If you are using the
cryptogram or list encryption programs, however, who use their own encryption keys, you would choose
CODES IN ALG. to use their internal coding systems.

When you choose the ENTER VALUES option you will be asked to provide four values: the + offset key,
the - offset key, the instance addl, and then enter either 3, 5, or 7.  you can enter any value
between 1 and 52 to the first three values, but remember what they are.  You will have to use them the
same way if you want to decrypt your message later.  The second option, USE MATRIX, lets you choose a
set of pre-generated code keys if you previously used the GENERATE [A] option.  You can choose between
1 and 20, and the program will display the keys before encrypting/decrypting.  It is best to write
down and verify these keys that just writing the number of the matrix code you used, in case the
matrix becomes corrupted.  The values should look like this:

CODES: {17 27 12 3}

2.3 What's going on?

As soon as you finish choosing your options for encryption or decryption, the display clears and is
replaced with the string LOADING TEXT -, with a number counting slowly upwards below it.  What the
program is doing is taking your string and converting it to a list of numerical values, which can be
manipulated easier.

After a while, another menu will come up.  It looks like this:

ALGORYTHM? STANDARD CRYPTOGRAM SHIFT LIST ENCRYPT AUX 1 AUX 2 AUX 3

From this menu, you can choose which algorith you want to use: the STANDARD, original algorith, the
CRYPTOGRAM creator, the simple SHIFT algorythm, and the secure LIST ENCRYPT algorithm.  In addition,
AUX 1-3 are slots for additional algorithms that you can either develop yourself or download from my
website as they are created.  For more ionformation on these, see Appendix A.

After choosing your algorithm, the screen will look something like this:

CRYPTOGRAMMER v1 By ؼ SOFTWARE ENCRYPTING - ##

When you see this screen, the particular algorithm is manipulating the list of numebr to encrypt the
data.  After this is finished, the string RELOADING TEXT - and another number will pop up.  While this
is displayed, the program is taking the now-encrypted values and turning them back into a text string.

When the process is complete, the following will be displayed:

DONE MESSAGE STORED IN Str1

Hitting enter will take you back to the main menu, where you can use the READ MSG option to see the
contents of your message.

3. ENCPROSB - the original algorythm

This subroutine is the original algorythm of EncPRo Alpha.  It is tried and true, is relatively
secure, and you only have to remember 4 numbers at the most for encrypting and ecrypting your message.

3.1 how to enter data and enryption codes

Using the explanations of section two, input your data and encryption keys.  Be sure to fill in all
sections exactly as you want them to appear.

3.2 what happens

After entering your codes, the program will take you to the algorithms menu.  Select the STANDARD
option, and the program will do the rest.  Using your keys, the algorithm shifts certain characters up
or down based on their position in the list.

3.3 what to do with the output

When you exit the program, your encrypted string will be displayed.  You must write it down letter for
letter if you want to use it again, along with the encryption codes.  If you do not want them on the
same piece of paper, write them down in a safe place.  You can use the same codes for many messages or
a different code for each one.

AN EXAMPLE:

Let's take the text "GREAT SOULS SUFFER IN SILENCE" by Johann Christoph Friedrich von Schiller.  After
entering, the program tells us that we have 29 characters, and that it will take 65.337 seconds, or a
little over a minute, to process.

Next, we go to encryption and encrypt with the values {13 34 28 3}.  After loading the text, we choose
STANDARD from the algorithms menu, and watch it finish encrypting.  After we use the READ MSG option,
we get the string T9)T5¼46I34¼4-¼YRLM0BS4CYXBVR.

There you have it, your first encrypted message!

Now you try it: decrypt the string 67+-2ØE-253XP*9YwT7/E6  using the codes {30 33 23 7} to read a
famous quote by Joseph Patrick Kennedy.

4. ENCPROS1 - the cryptogram algorythm

This algorithm, while not exactly an encryption program, creates cryptogram word puzzles
automatically.  Instead of sitting around with a pen and paper assigning letters and shifting each
character by hand, now any quote, famous or otherwise, can be turned into a publication-quality
cryptogram.  A cryptogram, for those who don't know, is a puzzle where each letter corresponds to a
different letter in the alphabet.

4.1 How to get to algorythm

Enter your quote.  Since this program has its own internal shifting codes, use the CODES IN ALG.
option under ENCRYPTION.  NOTE: THIS PROGRAM CAN NOT DECRYPT CRYPTOGRAMS.  Remember to choose
CRYPTOGRAM in the alogrithms menu.

4.2 algorythm options

There are two options: AUTO and MANUAL.  Manual is for those people who insist on assigning which
letter corresponds to which painstakingly by hand.  By using this, you will enter a letter for each
letter of the alphabet that the encrypted version will correspond to.  It is error-correcting, and
luckily won't allow you to assign the same letter to two different alphabet letters.  Auto will do all
the work for you, and spit out a nice cryptogram.

4.3 how to use output

This program can only detect the letters A-Z and Ø.  All other characters will remain as is.  To
generate a clue, compare your original quaote to your cryptogram and find which letters correspond to
the plain-text version.

AN EXAMPLE:

For a fun addition to our website, we are going to include a cryptogram.  For this one, we are going
to use the quote "THE HISTORIAN IS A PROPHET IN REVERSE - FREDERICH VON SCHLEGEL."  It is 62
characters long and will take a little over 2 minutes to encrypt.  We encrypt it using CODES IN ALG.,
and choose CRYPTOGRAM from the algorithms menu, then choose AUTO to automatically generate the codes. 
When the encryption is finished, we get the string "DAV AXODRMXHT XO H LMRLAVD XT MVEVMOV - QMVZMXIA
ERT OIAUVYVU."  Then, to get our clue, we  compare the two and find that M in the cryptogram is the
same as R in the regular version.  Then we write the output in proper cryptogram format like this:

"DAV AXODRMXHT XO H LMRLAVD XT MVEVMOV" - QMVZMXIA ERT OIAUVYVU Hint: M equals R

And there it is - FUYN CJNHD RNFXDUZNOL (hint: U equals O)!

5. ENCPROS2 - the simple shift

This is another type of extremely simple encryption algorithm.  It simply shifts letters of the
alphabet up a certain number of characters.  Another name for this algorithm is Caesar's Code, and it
is relatively easy to crack.  Therefore, do not use it if you do not want other people to read it.

5.1 how to use this algorythm

Use the same procedure as you did for ENCPROSB, but only the + OFFSET counts, as it is the amount of
characters to shift up by.  The rest of the values have no meaning and you can fill them in however
you want to.  However, the + OFFSET must still be between 1 and 52.  Remember to select the SHIFT
option in the algorithms menu.

5.2 how to use output

Write the text as you would normally.  Make sure that you remember how much you shifted it by so that
you can decrypt it again.

AN EXAMPLE:

"IT IS THE NEWSPAPERS DUTY TO PRINT THE NEWS AND RAISE HELL" shifted up by 8 would be "QB QA BPM
VMEAXIXMZA LCBG BW XZQVB BPM VMEA IVL ZIQAM PMTT."

6. ENCPROS3 - the list encrypt system

This is by far the most secure encryption system in the entire package.  Instead of just an algorithm,
this system encrypts each character with a unique shift, meaning that without the list of encryption
codes, there is absolutely no way to undo this kind of encryption, because each letter could stand for
52 others and therefore an infinite number of messages.  Can work for any message under 255
characters, or encrypt one larger message in parts.  Works with all 52 usable characters.

6.1 how to get to this algorythm

Write your message as usual, then choose CODES IN ALG. and choose LIST ENCRYPT from the algorithms
menu.  If you chose ENCRYPT, you will see a menu with a number of options.  If you chose DECRYPT, then
it will run automatically with the pre-installed list.

NOTE: if you encrypted a file and wrote the numbers from the list down, set List 5 to the right size
and enter the numbers sequentially.  If you used another method of securing the list data, read on.

6.2 overview of options

The options that are displayed in the list encrypt menu are: Gen. List, En/Decrypt, Enc. List, Dec.
List, Wipe List, and Info.  REMEMBER THAT YOU CAN ONLY GET HERE BY USING THE ENCRYPT COMMAND.

6.2.1 Gen. List

This command prompts you for how many characters long the list should be (as many or more than what
you are trying to encrypt), and then generates a list of random shifts.  It then encrypts your data. 
To generate your own, set the dim() of List 5 to your desired length, then enter values from 1 to 52
in each of the entries.

6.2.2 En/Decrypt

Use this option if your list is already defined and you just want to encrypt the data.

6.2.3 Enc. and Dec. List

This encrypts or decrypts your list codes into text strings with ENCPROSB.  More on this later.

6.2.4 Wipe List

Erases the list codes.  You should save or back up these codes (with encryption or otherwise) before
doing this, or lose all hope of ever decrypting your data.

6.2.5 Info

Tells you how long the current list is, and how long your text string is.  The list length must be
greater than or equal to the string length.

6.3 how enclist and declist works

Enc. and Dec. List are a method of securing your list codes for transfer.  While they are only as
secure as ENCPROSB, most people will not be able to distinguish the encrypted lists from a standard
string of encrypted text.  If you decrypt a list normally, however, it will end up looking like random
characters.

To encrypt a list:

Enter a few characters of random text into the text entry, then choose encrypt and CODES IN ALG. 
Choose LIST ENCRYPT.  Go to Enc. List and enter your 4 code values like you do normally in ENCPROSB. 
The program will then encrypt as if it were running ENCPROSB, but the output string is the encoded
list.

To decrypt a list:

Enter your encrypted list string into the text entry, then choose encrypt and CODES IN ALG.  Choose
LIST ENCRYPT.  Go to Dec. List and enter your 4 code values from before.  It will run as if you had
run ENCPROSB, but the output will just be random characters.  However, the encrypted list has now been
decrypted and is ready to encrypt or decrypt your text.

6.4 how to use output

The output is similar to the type of output created by ENCPROSB, but is much more secure.  Make sure
you do not get the two types mixed up, and remember which encrypted list goes with which encrypted
text string.

AN EXAMPLE:

I have the encrypted string [BFHB8.We] which has been encoded using list encrypt.  The list, in turn,
has been wiped, but not before being encrypted with the values {14 27 35 7}, resulting in the string
[wLDH((ev].

To start, we boot NUENCODE and enter the string for the encrypted list, then encrypt with CODES IN
ALG. and choose LIST ENCRYPT.  We go to Dec. List and enter our code numbers.  ENCPROSB starts, then
gives us the string [8,*73SCW].  These are just random characters, but what you can't see is that the
list has been reloaded.

Now we start the program again, this time entering our string of encrypted text.  Then we choose
DECRYPT and CODES IN ALG., and then LIST ENCRYPT from the algorithms menu.  The text string will
automatically decrypt, leaving you with the string [STRTEST1], or STRing TEST 1, the original message.

7. PICPROS 1 & 2 - graphical extensions to list encryption

Another way of encrypting your lists for safekeeping.

7.1 what they are

the PICPROS system is a method for securing your lists, by transforming the list values into a
seemingly random Pic file, Pic3.  However, in actuality, this picture can be read and transfromed back
into list data.  This method of securing lists means that you can send it as an image to others
instead of using a randomized text string.  Just download it with your link onto your computer and use
the Pic<>PICT converter, and then you can transport it as an FTP or E-mail attachment.

7.2 what you need to do before using them

You must have a previously created code list in List 5, no larger than 95 entries.

7.3 how to use them

To use this feature, open PICPROS1.  This will give you a menu with 3 options: ENC. LIST, DEC. LIST,
and MAX. LENGTH.  Enc. List will take your list and convert it to a Pic file, while Dec. List will
take the pic file you have stored in Pic3 and convert it back to a list of codes.  Max. Length is just
a reminder to keep the lists under 95 characters.  All options will run automatically without further
input.

7.4 how to use their output

Upload the Pic files to your computer, and save your lists as graphical data.  Or, keep a popular list
hanging around while freeing up the actual list for other uses.

8. ENCPROSP - another graphical extension to list encrypt

This creates both a unique 63-character list and a set of pictures to go along with it.  Not as secure
as the previous type, but the pictures look much more attractive and gather less suspicion, as they
look like pictures that other games and screensaver programs might generate.

ENCPROSP is completely automatic.  As soon as you run it, you are faced with two options: READ a
pre-existing picture set, or WRITE a new picutre-and-list code pair.  Make sure the program has
completed running before trying to encrypt with this code pair.  This program uses both Pic1 and Pic2.

9. Credits, acknowledgements, etc.

The ؼ Encryption System and all accompanying documentation © David Kibrick Parts of ؼ © 1998  Most
of ؼ EncPro and documentation © 1999

Written entirely on the TI-83, converted to computer format by TI Graph Link 83 software.

Rom Version 1.0600

Total application size: 7473 bytes

The author would like to thank: My computers, calculator, math teachers for not getting too mad,
Duracell Ultra batteries, my parents for encouragement, my brother for trying to carck all of my
algorithms in vain, the Texas Instruments corporation, various brands of crunchy tortilla pieces and
sugary carbonated beverages, CD93 Santa Cruz for helping me not to concentrate too hard (until I
turned it off), 7-11, my goldfish for not caring about this whatsoever, and, last but not least, to
the 4.3 billion other people who did the same.

Contact:  thetapi@idlecircuits.com

APPENDIX A - Writing your own algorithms and the ADK

WARNING: THIS SECTION IS FOR SERIOUS TI PROGRAMMERS ONLY.  IF YOU HAVE NO IDEA WHAT A BYTECODE
INTERPRETER OR A COMMAND-LINE INTERFACE IS (DESPITE THE FACT THAT NEITHER OF THEM OCCUR IN THIS
SECTION), THEN LEAVE NOW!

Step One:  Boot up the Æon Flux Spacial Interface System on your SGI, and wait for the goedesic
coordinate mip-mapping matrices to coincide.  Then, whip out your trusty TI-83, and hit <MODE> <ALPHA>
<S>, and then, after verifying your ROM version, press enter.

Step Two: If you tried to make believe you understood all of that stuff, but only got the explicit TI
instructions and entered them, then you're one: a complete idiot, and two: royally screwed.  Anyone
who knows anything about computers would know that the fist part is almost totally gibberish, and
anyone who knows about TIs knows that if you follow the instructions that I gave you, then you have
just started a calculator self-test and erased all of your programs and other data.  So, if your
calculator is now slowly counting its way up to 1000, skip the rest of this before you do something
really stupid.

And now, the fun part.  Remember those AUX commands way back in Chapter 2?  Well, now they are coming
back to haunt you.  By having these commands, you are now able to write your very own encryption and
decryption algorithms!

The following is the ADK - or Algorithm Development Kit - which is basically a set of rules you have
to follow to create your own algorithms.

First off, your program must be named AUXENC1, AUXENC2, or AUXENC3.  These program names fit into
Auxiliary slots 1, 2, and 3 respectively.

Next, the encryption bit.  This bit is defined in List 2(1).  If L2(1) is 0, then the user has
selected encryption, and if L2(1) is 1, then they have selected decryption.  Use this to send the
program to the appropriate areas depending on the mode.  All regular encryption programs should also
be able to decrypt data.

The data set you are working with is stored in List 1, and the data is all integers between 1 and 52. 
You may manipulate it in any way you want, except that at the end of your program all of the entries
must be integers between 1 and 52.

To facilitate decryption all of your manipulations to this data set must be able to be reversed.

Finally, you can store your own codes in lists 4 through 6, but you can also use the ENCPROSB
numbering system.  List 3 contains the 4 control numbers; the first three are from 1 to 52, the fourth
is either 3, 5, or 7.  You may use these numbers however you wish.

You may not write in [A], but you may write in any of the other matrices.  Or, you can use the 80 code
numbers in [A] to create an even larger algorithm.

You should have a counter that goes up as the characters are encrypted, in this design on the screen
(you should use ClrHome first):

YOUR ALGORITHMvX BY YOUR NAME EN/DECRYPTING - ## (your counter display)

Your algorithm must not use the Stop command, but it can use Return.

Aside from that, it's all up to you.

Good luck.