mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-29 07:37:45 +00:00
73 lines
1.6 KiB
C
73 lines
1.6 KiB
C
![]() |
// blowfish.h interface file for blowfish.cpp
|
||
|
// _THE BLOWFISH ENCRYPTION ALGORITHM_
|
||
|
// by Bruce Schneier
|
||
|
// Revised code--3/20/94
|
||
|
// Converted to C++ class 5/96, Jim Conger
|
||
|
|
||
|
#define MAXKEYBYTES 56 // 448 bits max
|
||
|
#define NPASS 16 // SBox passes
|
||
|
|
||
|
#define DWORD unsigned long
|
||
|
#define WORD unsigned short
|
||
|
#define BYTE unsigned char
|
||
|
|
||
|
class BlowFish
|
||
|
{
|
||
|
private:
|
||
|
DWORD * PArray ;
|
||
|
DWORD (* SBoxes)[256];
|
||
|
void Blowfish_encipher (DWORD *xl, DWORD *xr) ;
|
||
|
void Blowfish_decipher (DWORD *xl, DWORD *xr) ;
|
||
|
|
||
|
public:
|
||
|
BlowFish () ;
|
||
|
~BlowFish () ;
|
||
|
void initialize (BYTE key[], int keybytes) ;
|
||
|
DWORD GetOutputLength (DWORD lInputLong) ;
|
||
|
DWORD Encode (BYTE * pInput, BYTE * pOutput, DWORD lSize) ;
|
||
|
void Decode (BYTE * pInput, BYTE * pOutput, DWORD lSize) ;
|
||
|
|
||
|
} ;
|
||
|
|
||
|
// choose a byte order for your hardware
|
||
|
#define ORDER_DCBA // chosing Intel in this case
|
||
|
|
||
|
#ifdef ORDER_DCBA // DCBA - little endian - intel
|
||
|
union aword {
|
||
|
DWORD dword;
|
||
|
BYTE byte [4];
|
||
|
struct {
|
||
|
unsigned int byte3:8;
|
||
|
unsigned int byte2:8;
|
||
|
unsigned int byte1:8;
|
||
|
unsigned int byte0:8;
|
||
|
} w;
|
||
|
};
|
||
|
#endif
|
||
|
|
||
|
#ifdef ORDER_ABCD // ABCD - big endian - motorola
|
||
|
union aword {
|
||
|
DWORD dword;
|
||
|
BYTE byte [4];
|
||
|
struct {
|
||
|
unsigned int byte0:8;
|
||
|
unsigned int byte1:8;
|
||
|
unsigned int byte2:8;
|
||
|
unsigned int byte3:8;
|
||
|
} w;
|
||
|
};
|
||
|
#endif
|
||
|
|
||
|
#ifdef ORDER_BADC // BADC - vax
|
||
|
union aword {
|
||
|
DWORD dword;
|
||
|
BYTE byte [4];
|
||
|
struct {
|
||
|
unsigned int byte1:8;
|
||
|
unsigned int byte0:8;
|
||
|
unsigned int byte3:8;
|
||
|
unsigned int byte2:8;
|
||
|
} w;
|
||
|
};
|
||
|
#endif
|