Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
24
Добавлен:
16.04.2013
Размер:
1.58 Кб
Скачать
#ifndef _RC5_DEFINED

#define _RC5_DEFINED

/* The RC5 blocksize */

#define RC5_BLOCKSIZE		4

/* The default and maximum (sane) number of RC5 rounds */

#define RC5_DEFAULT_ROUNDS	12
#define RC5_MAX_ROUNDS		32

/* The maximum RC5 expanded key size: 256 bytes.  Note that sizeof( LONG )
   may not equal 4, so the total size may in fact be more than 256 bytes,
   however the total information content is only 256 bytes */
#define MASK32(x)             x
#define RC5_EXPANDED_KEYSIZE_LONG	16
#define RC5_EXPANDED_KEYSIZE		( RC5_EXPANDED_KEYSIZE_LONG * sizeof( LONG ) )
#define mgetLLong(memPtr)               \
                ( ( ( LONG ) memPtr[ 0 ] ) | ( ( LONG ) memPtr[ 1 ] << 8 ) | \
                  ( ( LONG ) memPtr[ 2 ] << 16 ) | ( ( LONG ) memPtr[ 3 ] << 24) ); \
                memPtr += 4

#define mputLLong(memPtr,data)  \
                memPtr[ 0 ] = ( BYTE ) ( ( data ) & 0xFF ); \
                memPtr[ 1 ] = ( BYTE ) ( ( ( data ) >> 8 ) & 0xFF ); \
                memPtr[ 2 ] = ( BYTE ) ( ( ( data ) >> 16 ) & 0xFF ); \
                memPtr[ 3 ] = ( BYTE ) ( ( ( data ) >> 24 ) & 0xFF ); \
                memPtr += 4


/* A structure to hold the RC5 key */
typedef unsigned long  LONG;
typedef char BYTE; 
typedef struct {
	LONG S[ RC5_EXPANDED_KEYSIZE_LONG ];	/* S-box */
	int noRounds;							/* Number of rounds */
	} RC5_KEY;

/* Prototypes for functions in RC5.C */

void rc5encrypt( RC5_KEY *key, BYTE *data );
void rc5decrypt( RC5_KEY *key, BYTE *data );
void rc5keyInit( RC5_KEY *key, BYTE *userKey, int userKeyLength );

#endif /* _RC5_DEFINED */
Соседние файлы в папке RC5