HC-256
From Wikipedia, the free encyclopedia
HC-256 is a stream cipher designed to provide bulk encryption in software at high speeds while permitting strong confidence in its security. Designed by Hongjun Wu for the Institute for Infocomm Research, it is an eSTREAM cipher candidate and has been selected as a Profile 1, Phase 2 Focus candidate. It is not patented.
[edit] Function
HC-256 has a 256 bit key and an initialization vector of 256 bits.
Internally, it consists of two secret tables (P and Q). Each table contains 1024 32-bit words. For each state update one 32-bit word in each table is updated using a non-linear update function. After 2048 steps all elements of the tables have been update.
It generates one 32-bit word for each update step using a 32-bit to 32-bit mapping function similar to the output function of the Blowfish cipher. Finally a linear bit-masking function is applied to generate an output word. It uses the two message schedule functions in the hash function SHA-256 internally, but with the tables P and Q as S-boxes.
[edit] Performance
The performance of HC-256 is estimated by its author to be about 4 cycles/byte on a Pentium-4 processor. However the initialization phase of the cipher includes expanding the 256-bit key into the tables P, Q and then running the cipher for 4096 steps. The author of HC-256 estimates this process to take around 74,000 cycles.
[edit] External links
Algorithms: A5/1 | A5/2 | E0 | FISH | Grain | HC-256 | ISAAC | LILI-128 | MUGI | Panama | Phelix | Pike | Py | Rabbit | RC4 | Salsa20 | Scream | SEAL | SOBER | SOBER-128 | SOSEMANUK | Trivium | VEST | WAKE |
Theory: Shift register | LFSR | NLFSR | Shrinking generator | T-function | IV |
Standardization: eSTREAM |
History of cryptography | Cryptanalysis | Cryptography portal | Topics in cryptography |
Symmetric-key algorithm | Block cipher | Stream cipher | Public-key cryptography | Cryptographic hash function | Message authentication code | Random numbers |
Note: This template has been discontinued. Instead use {{Crypto navbox | stream}} which is the one you see inserted here. |