Database Reference
In-Depth Information
A = S [i] = (S [i] +A+B) <<<3;
B = L[j] = (L[j] + A+ B) <<< (A+B);
i = (i+1) mod (t);
j = (j+1) mod (c);
4.5.7 RC6 Algorithm
The RC6 block cipher is a modified version of RC5, which uses four
working registers instead of two, as well as integer multiplication as an
additional primitive operation. The integer multiplication process greatly
enhances the diffusion achieved per round, which leads to greater secu-
rity, fewer rounds, and increased throughput. The key schedule of RC6-
w/r/b is similar to the key schedule of RC5- w/r/b. The only difference
is that for RC6- w/r/b, more words are derived from the user-supplied
key for use during encryption and decryption. The user supplies a key
of b bytes, where 0 ≤ b ≤ 255. From this key, 2 + 4 words ( w bits each)
are derived and stored in the array S [0, …, 2 r + 3]. This array is used in
both encryption and decryption [59]. Generally, RC6 consists of two
Feistel networks whose data are mixed via data-dependent rotations.
The operations in a single round of RC6 contain two applications of the
squaring function f ( x ) = x (2 x + 1) mod 2 32 , two fixed 32-bit rotations,
two data-dependent 32-bit rotations, two XORs, and two additions
modulo 2 32 . The steps of RC6 encryption and decryption are summa-
rized next and the block diagrams or RC6 encryption and decryption
are shown in Figures 4.7 and 4.8, respectively.
4.5.7.1 RC6 Encryption Algorithm Input: Four w -bit plaintext values
are stored in registers A, B, C, and D.
Number r of rounds
w -bit round keys S [0…, 2 r + 3]
Output: Four w -bit ciphertext values are stored in registers A, B,
C, and D.
Procedure:
B = B + S [0];
D = D + S [1];
For i = 1 to r do
{t = (B × (2B + 1)) <<< lg w;
u = (D × (2D + 1)) <<< lg w;
Search WWH ::




Custom Search