Defines

DESCrypter.cpp File Reference

#include <zeusbase/Security/DESCrypter.h>

Defines

#define DO_PERMUTATION(a, temp, b, offset, mask)
#define INITIAL_PERMUTATION(left, temp, right)
#define FINAL_PERMUTATION(left, temp, right)
#define DES_ROUND(from, to, work, subkey)
#define READ_64BIT_DATA(data, left, right)
#define WRITE_64BIT_DATA(data, left, right)

Define Documentation

#define DES_ROUND (   from,
  to,
  work,
  subkey 
)
Value:
work = from ^ *subkey++;               \
    to ^= sbox8[  work      & 0x3f ];      \
    to ^= sbox6[ (work>>8)  & 0x3f ];      \
    to ^= sbox4[ (work>>16) & 0x3f ];      \
    to ^= sbox2[ (work>>24) & 0x3f ];      \
    work = ((from << 28) | (from >> 4)) ^ *subkey++;  \
    to ^= sbox7[  work      & 0x3f ];      \
    to ^= sbox5[ (work>>8)  & 0x3f ];      \
    to ^= sbox3[ (work>>16) & 0x3f ];      \
    to ^= sbox1[ (work>>24) & 0x3f ];
#define DO_PERMUTATION (   a,
  temp,
  b,
  offset,
  mask 
)
Value:
temp = ((a>>offset) ^ b) & mask;              \
    b ^= temp;                                    \
    a ^= temp<<offset;
#define FINAL_PERMUTATION (   left,
  temp,
  right 
)
Value:
left  =  (left << 31) | (left >> 1);              \
    temp  =  (left ^ right) & 0xaaaaaaaa;             \
    left  ^= temp;                                    \
    right ^= temp;                                    \
    right  =  (right << 31) | (right >> 1);           \
    DO_PERMUTATION(right, temp, left, 8, 0x00ff00ff)  \
    DO_PERMUTATION(right, temp, left, 2, 0x33333333)  \
    DO_PERMUTATION(left, temp, right, 16, 0x0000ffff) \
    DO_PERMUTATION(left, temp, right, 4, 0x0f0f0f0f)
#define INITIAL_PERMUTATION (   left,
  temp,
  right 
)
Value:
DO_PERMUTATION(left, temp, right, 4, 0x0f0f0f0f)   \
    DO_PERMUTATION(left, temp, right, 16, 0x0000ffff)  \
    DO_PERMUTATION(right, temp, left, 2, 0x33333333)   \
    DO_PERMUTATION(right, temp, left, 8, 0x00ff00ff)   \
    right =  (right << 1) | (right >> 31);             \
    temp  =  (left ^ right) & 0xaaaaaaaa;              \
    right ^= temp;                                     \
    left  ^= temp;                                     \
    left  =  (left << 1) | (left >> 31);
#define READ_64BIT_DATA (   data,
  left,
  right 
)
Value:
left  = (data[0] << 24) | (data[1] << 16) | (data[2] << 8) | data[3];  \
    right = (data[4] << 24) | (data[5] << 16) | (data[6] << 8) | data[7];
#define WRITE_64BIT_DATA (   data,
  left,
  right 
)
Value:
data[0] = (Uint8)((left  >> 24) & 0xff); data[1] = (Uint8)((left >> 16) & 0xff);  \
    data[2] = (Uint8)((left  >>  8) & 0xff); data[3] = (Uint8)(left &0xff);           \
    data[4] = (Uint8)((right >> 24) & 0xff); data[5] = (Uint8)((right >> 16) & 0xff); \
    data[6] = (Uint8)((right >>  8) & 0xff); data[7] = (Uint8)(right & 0xff);
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines


Written by Benjamin Hadorn http://www.xatlantis.ch.
Last change made on Sun Jan 22 2012 15:28:19