Patent ID: 7860241

Claim:
A computer program embodied by a non-transitory computer readable storage medium for generating a simple universal hash value having instructions executable by a machine to perform the functions of: inputting at least one of a plurality of Plaintext blocks into an integrity aware encryption scheme using at least one of two secret keys to obtain a plurality of Ciphertext blocks; computing a Plaintext checksum value from the plurality of Plaintext blocks, including reducing the plurality of Plaintext blocks to obtain a plurality of partial Plaintext blocks by computing the exclusive-or sum of equal sized segments of the Plaintext blocks, and combining the plurality of partial Plaintext blocks using an exclusive-or sum to obtain the Plaintext checksum; dividing at least one of the plurality of Ciphertext blocks into a plurality of equal sized segments; assigning each one of a plurality of bits from a third key to each of the plurality of segments, respectively; selecting a single bit from an assigned segment in correspondence with the plurality of bits of the third key; concatenating a plurality of single bits selected from each of the segments to obtain a partial Ciphertext; combining partial Ciphertexts to obtain a Ciphertext checksum, including selecting partial Ciphertexts using the third key from each of the plurality of Ciphertext blocks by using the bits of the third key as an index into the Ciphertext block, and combining the partial Ciphertexts using an exclusive-or sum to obtain the Ciphertext checksum; combining the Plaintext checksum and the Ciphertext checksum by an exclusive-or operation to obtain the simple universal hash value; and reducing the plurality of Plaintext blocks to obtain a plurality of partial Plaintext blocks, and combining the plurality of partial Plaintext blocks using an exclusive-or sum to obtain the Plaintext checksum, wherein the Plaintext checksum, the Ciphertext checksum and the universal hash value are all of the same size, and the size of the first of the plurality of Plaintext blocks is an integer multiple of the size of the universal hash value.