53 lines
1.1 KiB
C++
53 lines
1.1 KiB
C++
/*
|
|
* mangle.h -- Mangle (encrypt/decrypt string with private key) interface
|
|
*/
|
|
|
|
class Mangle {
|
|
|
|
public:
|
|
Mangle();
|
|
|
|
void In( const StrPtr &data, const StrPtr &key,
|
|
StrBuf &result, Error *e ) ;
|
|
|
|
void InMD5( const StrPtr &data, const StrPtr &key,
|
|
StrBuf &result, Error *e )
|
|
{
|
|
DoIt( data, key, result, 0, 1, e );
|
|
};
|
|
|
|
void Out( const StrPtr &data, const StrPtr &key,
|
|
StrBuf &result, Error *e ) ;
|
|
|
|
void OutMD5( const StrPtr &data, const StrPtr &key,
|
|
StrBuf &result, Error *e )
|
|
{
|
|
DoIt( data, key, result, 1, 1, e );
|
|
};
|
|
|
|
void XOR( StrBuf &data, const StrPtr &key, Error *e );
|
|
|
|
void Mix( const char *buf )
|
|
{
|
|
s2[0] = (int) *buf++; s2[1] = (int) *buf++;
|
|
s2[2] = (int) *buf++; s2[3] = (int) *buf++;
|
|
s2[4] = (int) *buf++; s2[5] = (int) *buf++;
|
|
s2[6] = (int) *buf++; s2[7] = (int) *buf++;
|
|
};
|
|
|
|
private:
|
|
|
|
void DoIt( const StrPtr &data, const StrPtr &key,
|
|
StrBuf &result, int direction, int digest,
|
|
Error *e );
|
|
|
|
void Getdval( int direction, int m[], int k[] );
|
|
|
|
|
|
int o[8];
|
|
int pr[8];
|
|
int s0[16];
|
|
int s1[16];
|
|
int s2[8];
|
|
};
|