Circuits, methods, and apparatus for encrypting and decrypting data using
a field programmable gate array. The underlying encryption algorithm is
tailored for implementation using programmable logic elements such as
lookup tables or macrocells. A specific embodiment of the present
invention provides a method of encryption that is optimized for
implementation using a reduced number of lookup tables. The method makes
efficient use of a long key, 512 bits in a specific embodiment, and
incorporates substitution or S-boxes, input whitening, permutation, and a
variable number of rounds.