LibRCrypt is an Objective C library for complex data encryption based on Rubik's Cubes. The idea's pretty simple: If you represent data as the squares on a Rubik's Cube, you can apply transformations to the data and get back encrypted data, all of which is commutatitive. Just as a Rubik's Cube can be solved if you know all of the moves, this data can be "unwound", so to speak, if you know all of the transforms applied, but the encryption is even deeper than that. A cube can only cover (9 squares per face x 6 faces) 54 significant bits of data. Therefore, compressed data must be composed of multiple (even thousands) of Rubik's Cubes.