The Panama Cryptographic Function

By Joan Daemen and Craig Clapp

Dr. Dobb's Journal December 1998

(a) 
for(i=0 ; i<8 ; i++) { p[i] = input[i]; } 
(b) 
for(i=0 ; i<8 ; i++) { p[i] =b[4] [i]; } 

(c)
for(i=0 ; i<17 ; i++) { r[i] = a[i] ^ (a[(i+1)%17] | ~a[(i+2)%17] ); } 
for(i=0 ; i<17 ; i++) { s[i] = r[(7*i)%17] <<< ((i*(i+1)/2 )%32); } 
for(i=0 ; i<17 ; i++) { t[i] = s[i] ^ s[(i+1)%17] ^ s[(i+4)%17] ; } 
A[0] = t[0] ^ 0x00000001 ; 
for(i=0 ; i<8 ; i++) { A[(i+1)%17] = t[(i+1)%17 ] ^ p[i]; } 
for(i=0 ; i<8 ; i++) { A[(i+9)%17] = t[(i+1)%17 ] ^ b[16][i]; } 

(d) 
for(i=0 ; i<8 ; i++) { z[i] = a[i]; } 

Example 2: State updating transformation. (a) Push mode; (b) Pull mode; (c) common part; (d) output from Pull mode.

Back to Article


Copyright © 1998, Dr. Dobb's Journal