Seaside/SpyCustom/sdk/checksum_md5.h

51 lines
1.2 KiB
C
Raw Normal View History

2021-06-16 18:45:17 +03:00
#ifndef CHECKSUM_MD5_H
#define CHECKSUM_MD5_H
#ifdef _WIN32
#pragma once
#endif
#define MD5_DIGEST_LENGTH 16
#define MD5_BIT_LENGTH ( MD5_DIGEST_LENGTH * sizeof(unsigned char) )
struct MD5Value_t
{
unsigned char bits[MD5_DIGEST_LENGTH];
void Zero();
bool IsZero() const;
bool operator==(const MD5Value_t& src) const;
bool operator!=(const MD5Value_t& src) const;
};
typedef struct
{
unsigned int buf[4];
unsigned int bits[2];
unsigned char in[64];
} MD5Context_t;
void MD5Init(MD5Context_t* context);
void MD5Update(MD5Context_t* context, unsigned char const* buf, unsigned int len);
void MD5Final(unsigned char digest[MD5_DIGEST_LENGTH], MD5Context_t* context);
char* MD5_Print(unsigned char* digest, int hashlen);
void MD5_ProcessSingleBuffer(const void* p, int len, MD5Value_t& md5Result);
unsigned int MD5_PseudoRandom(unsigned int nSeed);
bool MD5_Compare(const MD5Value_t& data, const MD5Value_t& compare);
inline bool MD5Value_t::operator==(const MD5Value_t& src) const
{
return MD5_Compare(*this, src);
}
inline bool MD5Value_t::operator!=(const MD5Value_t& src) const
{
return !MD5_Compare(*this, src);
}
#endif