1. A method of encrypting a data string, comprising: generating an n-dimensional entity, wherein the n-dimensional entity comprises random bits; and for each bit in the data string: reading a number of bits from the n-dimensional entity; performing an action based in part on the read number of bits; generating a bit sequence; selecting a direction within the n-dimensional entity based in part on the generated bit sequence; determining an offset between a cursor position and a match bit within the n-dimensional entity, wherein the match bit is based in part on the action, the direction, and the each bit in the data string; and modifying the generated bit sequence with the determined offset to generate an encoded data string.