This directory doesn't contain any "real", that is, interesting, crypto stuff. It's just some frequency analysis stuff I've been playing with, really, trying to get a decent grip on the whole thing. Okay for playing with substitution codes like "A always means X, B always means F, C always means K", and so on. As I said, not "real" crypto. So please don't get too excited. Also, it doesn't work very well. You can do a frequency analysis on an ASCII (7-bit) file with: $ ./freq_analysis some_file.txt This will output a C array definition which you can paste into crypto.c (except you'll have to remove the final "," because I'm too lazy, and encode any ' or / characters with a "/" character - ie: char english[]={' ', 'e', 't', ''', }; should become char english[]={' ', 'e', 't', '\'' }; before you try to compile crypto.c. You'll have to remove or comment-out any other definitions of english[], too, of course. Then you can decode it again: $ ./crypto some_file.txt This should give you the same results as "cat some_file.txt" - ie, it should use the frequency array you gave it to decode the same file. With a little luck, it will also decrypt some other file, too, but it all depends on how well you seed it with frequency analysis data. You will probably get better results by "tr '[A-Z]' '[a-z]'" on the files before you start. The main criteria for success, though, depends on how closely your encrypted file matches the character frequency of the sample you fed it. Also, 8-bit ASCII isn't supported - so nothing over ASCII 127.