1. A method for encrypting data, the method comprising: selecting, via a processor of a computing device, a predetermined number of input bits; for a predetermined number of iterations: constructing first blocks using one of output bits from one of a previous iteration and the predetermined number of input bits; permuting the first blocks relative to respective block positions; decomposing the first blocks into a first set of bytes; generating a second set of bytes by replacing at least a portion of the first set of bytes using a lookup table; constructing second blocks using the second set of bytes; rotating bits in each block of the second blocks; decomposing the second blocks to form a first set of bits; expanding the first set of bits; generating an iteration key from an existing key; adding the iteration key to the first set of bits to generate a second set of bits; and reducing the second set of bits to generate a set of output bits for a respective iteration; and performing an XOR operation on the set of the output bits and the predetermined number of input bits to produce a set of encrypted bits.