if it were me, i would use a system that had more systematic patterns, something they could figure out, but something harder. its no fun to just go use RSA or something.
what i would do is make a table of two letter combinations. 26*26=676.
so you need 676 unique numbers. you may generate them randomly. its best if they all have the same exact number of digits, don't use 1, 13, ... use all 3 digit numbers. if you want to start the number with a 0, that's ok. use a randomly generated table, but don't reuse any numbers, and for simplicity eliminate 111, 222, 333, 444, 555, 666, 777, 888, 999, and 000.
now that you have a table for all your two letter combinations (you might try writing a basic or c++ program to do these things for you, but its really simple) you can convert your code into a basic number stream. if you want, you can also use a 2 digit stream representing single letters at every x digit...
like, so... you would use a non repeating non rational number like pi or e.
if pi is 3.1415... you would skip the first three letter pairs of your message and then place a single letter with two digits. you would skip then 1 letter pair, then a single. skip 4 more pairs, then a single. then on and on... since pi never repeats, that shouldn't be easy to dicipher.
since the single code table and the triple code table won't have any correlation to each other and the pi pattern would be tough to recognize...
you could also use some sort of summing method on a translation of the original message. say, using the standard values for the letters, 1=a 2=b... sum the entire messages value, take the last number you get, use that as an interger multiple of pi, store that number as your very first number, and better yet, your very last number can be an integer multiple of the entire message...
another one i liked so much... I've been working on the code, but i haven't even put it on a computer yet. if anyone is super quick with c++ and will write one up and send it to me, id giggle like a school girl.
using the pi method again... choosing a random table for a=z with two digit characters... create a stream of digits by using the decimal place of the position of the given 2 digit character in pi. i haven't programmed this one yet, but its on my list.
http://www.cecm.sfu.ca/projects/ISC/dataB/isc/C/pi10000.txt
say you wanted to use 15, the 15 is the 3rd and 4th decimal place, so you would just have 03 for 15 and 15 would be some random letter youve chosen in your letter to table translator. you would want to set your level of digits to start with sort of high. id use 4 digits. if the first or only occurance of a letters two digit code is not 4 digits or more than 4 digits, remove it from the lookup table of letter-number translations. another option is to use a 5 digit stream, with the first digit of each group referring to the interger multiple of pi, and the following 4 say equal n. then 10^(4+n) is the multiple of required make the digits the first 4 from the left of the decimal place. you can use a program to move the decimal by 10^n and remove the whole numbers, then by 10^4 more, and truncate the decimal to get the exact interger value for your lookup table. is that a mind**** or what? your friends won't hack that by looking at it or using any basic predictions for common language patterns.