Patent ID: 7321659

Claim:
A method for generating a simple universal hash value, the method comprising: inputting a plurality of Plaintext blocks into an integrity aware encryption scheme using at least one of two secret keys to obtain a corresponding plurality of Ciphertext blocks; computing a Plaintext checksum value responsive to each of the plurality of Plaintext blocks; processing the plurality of Ciphertext blocks and a third key to obtain a Ciphertext checksum responsive to each of the corresponding plurality of Ciphertext blocks; combining the Plaintext checksum and the Ciphertext checksum to obtain the simple universal hash value; dividing the Ciphertext block into a plurality of equal sized segments; assigning each one of a plurality of bits from the third key to each of the plurality of segments, respectively; selecting a single bit from the assigned segment in correspondence with the plurality of bits of the third key; and concatenating the plurality of single bits selected from each of the segments to obtain the partial Ciphertext, wherein: the Plaintext checksum, the Ciphertext checksum and the universal hash value are all of the same size; the size of the first of the plurality of Plaintext blocks is a multiple of the size of the universal hash value; obtaining the Ciphertext checksum comprises selecting partial Ciphertexts using the third key from each of the plurality of Ciphertext blocks and combining the partial Ciphertexts using an exclusive-or sum to obtain the Ciphertext checksum; and selecting partial Ciphertexts using the third key from a Ciphertext block comprises the process of using the bits of the third key as an index into the Ciphertext block.