Patent ID: 8509427

Claim:
An encryption engine for encrypting a plaintext message, comprising: a memory for storing at least one state variable; and control logic configured to: receive at least one plaintext message, wherein the plaintext message forms at least one plaintext block of a fixed block size; encrypt said at least one plaintext block by applying two or more pseudorandom permutations to each plaintext block; and modify an 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 the following: previously generated permutation outputs, previously generated permutation inputs, a function of one or more of the previous state variables, ciphertext, and plaintext; and wherein the at least one plaintext message forms at least one plaintext sub-block less than the fixed block size, and wherein the control logic is further configured to: receive the at least one plaintext sub-block; encrypt said at least one plaintext sub-block by modifying the at least one plaintext sub-block by a keystream generated by applying said two or more pseudorandom permutations to the at least one state variable; generate a transformed plaintext sub-block by transforming the at least one plaintext sub-block to the fixed block size; and modify an input to each of said pseudorandom permutations by the at least one state variable which is modified by one of said previously generated permutation outputs, said previously generated permutation inputs, said ciphertext, and said transformed plaintext sub-block.