1. A method, implemented by a computing system programmed to perform the following, comprising: generating a predetermined number of blocks of random data; prepending the predetermined number of blocks of random data to an output stream; combining a last block of the predetermined number of blocks of random data with a first block of plaintext to create a first temporary block; enciphering the first temporary block to generate a first block of ciphertext; performing an exclusive-OR (XOR) operation on all bits of the first block of plaintext in its pre-enciphered state; generating an index using a result of the XOR operation; selecting a block from a set of blocks, including the predetermined number of blocks of random data and the first block of ciphered text, using the index; combining the selected block with a second block of plaintext to create a second temporary block; and enciphering the second temporary block to generate a second block of ciphertext.