mirror of
https://github.com/kevinbentley/Descent3.git
synced 2025-01-22 19:55:23 +00:00
77 lines
2.0 KiB
C
77 lines
2.0 KiB
C
|
/*
|
|||
|
This is the C++ implementation of the MD5 Message-Digest
|
|||
|
Algorithm desrcipted in RFC 1321.
|
|||
|
I translated the C code from this RFC to C++.
|
|||
|
There is now warranty.
|
|||
|
|
|||
|
Feb. 12. 2005
|
|||
|
Benjamin Gr<EFBFBD>delbach
|
|||
|
*/
|
|||
|
|
|||
|
/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
|
|||
|
rights reserved.
|
|||
|
|
|||
|
License to copy and use this software is granted provided that it
|
|||
|
is identified as the "RSA Data Security, Inc. MD5 Message-Digest
|
|||
|
Algorithm" in all material mentioning or referencing this software
|
|||
|
or this function.
|
|||
|
|
|||
|
License is also granted to make and use derivative works provided
|
|||
|
that such works are identified as "derived from the RSA Data
|
|||
|
Security, Inc. MD5 Message-Digest Algorithm" in all material
|
|||
|
mentioning or referencing the derived work.
|
|||
|
|
|||
|
RSA Data Security, Inc. makes no representations concerning either
|
|||
|
the merchantability of this software or the suitability of this
|
|||
|
software for any particular purpose. It is provided "as is"
|
|||
|
without express or implied warranty of any kind.
|
|||
|
|
|||
|
These notices must be retained in any copies of any part of this
|
|||
|
documentation and/or software.
|
|||
|
*/
|
|||
|
|
|||
|
#pragma once
|
|||
|
|
|||
|
typedef unsigned char *POINTER;
|
|||
|
typedef unsigned int uint32_t;
|
|||
|
/* MD5 context. */
|
|||
|
typedef struct _context_md5_t {
|
|||
|
uint32_t buf[4];
|
|||
|
uint32_t bits[2];
|
|||
|
unsigned char in[64];
|
|||
|
} context_md5_t;
|
|||
|
|
|||
|
typedef context_md5_t MD5_CTX;
|
|||
|
|
|||
|
class MD5
|
|||
|
{
|
|||
|
|
|||
|
private:
|
|||
|
|
|||
|
MD5_CTX ctx;
|
|||
|
void MD5Transform(uint32_t buf[4], uint32_t const in[16]);
|
|||
|
void Encode (unsigned char*, unsigned int*, unsigned int);
|
|||
|
void Decode (unsigned int*, unsigned char*, unsigned int);
|
|||
|
void MD5_memcpy (POINTER, POINTER, unsigned int);
|
|||
|
void MD5_memset (POINTER, int, unsigned int);
|
|||
|
|
|||
|
public:
|
|||
|
|
|||
|
void MD5Init ();
|
|||
|
|
|||
|
void MD5Update (unsigned char*, unsigned int);
|
|||
|
void MD5Update (float val);
|
|||
|
void MD5Update (int val);
|
|||
|
void MD5Update (unsigned int val);
|
|||
|
void MD5Update (unsigned char val);
|
|||
|
void MD5Update (short val);
|
|||
|
|
|||
|
void MD5Final (unsigned char [16]);
|
|||
|
|
|||
|
~MD5();
|
|||
|
MD5(){};
|
|||
|
|
|||
|
MD5* Clone();
|
|||
|
static void Destroy(MD5 *obj);
|
|||
|
};
|