Zlib7 compresses a file of X size to a specified Y size, that cannot be greater than 28 bytes. That's all. The idea is simple: we keep only the hash of the data we want to compress (SHA1 digest), then, when we need to decompress it, we generate random data of the same size of the compressed one, and we hash it. When we have the same hash, we've decompressed it ;) Surely the zlib7's compression requires A LOT of cpu power, but it is mainly designed for the year 2500, after the IV World War, when the quantum computer will be the standard. But what if the user wants to compress the data to a specified size? Well, it's possible. We just keep some bytes in the saved compressed file, the rest is the hash of the discarded ones. Usage: zlib7 cX|d filein fileout cX to compress filein keeping `X' bytes of the input data. The size of fileout will be 28 bytes + `X' bytes. d to decompress filein to fileout Examples: echo h > filein ./zlib7 c filein fileout ./zlib7 d fileout decompressed diff filein decompressed OR echo lp > filein2 ./zlib7 c1 filein2 fileout2 ./zlib7 d fileout2 decompressed2 diff filein2 decompressed2 Note: If you're trying to decompress a file that was bigger than 2 bytes, it's possible that you will finish when the entropy death will come, but, keep in mind that it's a matter of luck. The random rules it all. ^_- Note2: Zlib7 depends on the openssl library. Judges: Although the rules do not specifically permit the use of OpenSSL they also don't prevent me from using it. How is it obfuscated? Well let's begin to say that when I tried to add the "variable size compression" feature, I had serious problems to understand what the hell I had to touch. (yes, I rewrote it from scratch again.) Now, the main point of the source code is to draw a lot of smiling faces and ascii art of human shapes, this confuses the reader, driving her/him through a different series of emotional states. I dislike the use of the "if" word in C, thus you will not see it. It's also polite to limit the use of the ";" symbol to tell the compiler when the next operation begins. THE_END ^_^