Patent ID: 8712036

Claim:
An encryption engine for encrypting a plaintext message, comprising: a memory for storing at least one state variable; and control logic configured to: form at least one nonce block from at least one nonce; initialize the at least one state variable to at least one initial value; randomize each nonce block by applying two or more pseudorandom permutations to each nonce block; modify a first input to each of said pseudorandom permutations by the at least one state variable which is modified for each nonce block by state variables of a previous nonce block, outputs from the previous nonce block's pseudorandom permutations, and inputs to the previous nonce block's pseudorandom permutations; receive at least one plaintext message, wherein the plaintext message forms at least one plaintext block; encrypt said plaintext block by applying two or more pseudorandom permutations to each block; and modify a second input to each of said pseudorandom permutations by the at least one state variable which is modified for each plaintext block by at least one of previously generated permutation outputs, previously generated permutation inputs, ciphertext, and plaintext.