This code implements the MD5 message-digest algorithm.
The algorithm is due to Ron Rivest. This code was written by Colin Plumb in 1993, no copyright is claimed. This code is in the public domain; do with it what you wish.
Equivalent code is available from RSA Data Security, Inc. This code has been tested against that, and is equivalent, except that you don't need to include two pages of legalese with every copy.
To compute the message digest of a chunk of bytes, create an TMD5 object, call Update() as needed on buffers full of bytes, and then call Final(), which will, optionally, fill a supplied 16-byte array with the digest.
Public Member Functions | |
TMD5 () | |
Create TMD5 object. | |
TMD5 (const TMD5 &md5) | |
MD5 copy ctor. | |
TMD5 (const UChar_t *digest) | |
Create finalized TMD5 object containing passed in 16 byte digest. | |
virtual | ~TMD5 () |
const char * | AsString () const |
Return message digest as string. | |
void | Final () |
MD5 finalization, ends an MD5 message-digest operation, writing the the message digest and zeroizing the context. | |
void | Final (UChar_t digest[16]) |
MD5 finalization, ends an MD5 message-digest operation, writing the the message digest and zeroizing the context. | |
virtual TClass * | IsA () const |
TMD5 & | operator= (const TMD5 &rhs) |
MD5 assignment operator. | |
void | Print () const |
Print digest in ascii hex form. | |
Int_t | SetDigest (const char *md5ascii) |
Set the digest from the ASCII representation 'md5ascii'. | |
virtual void | Streamer (TBuffer &) |
void | StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b) |
void | Update (const UChar_t *buf, UInt_t len) |
Update TMD5 object to reflect the concatenation of another buffer full of bytes. | |
Static Public Member Functions | |
static TClass * | Class () |
static const char * | Class_Name () |
static constexpr Version_t | Class_Version () |
static const char * | DeclFileName () |
static TMD5 * | FileChecksum (const char *file) |
Returns checksum of specified file. | |
static Int_t | FileChecksum (const char *file, UChar_t digest[16]) |
Returns checksum of specified file in digest argument. | |
static TMD5 * | ReadChecksum (const char *file) |
Returns checksum stored in ASCII in specified file. | |
static Int_t | WriteChecksum (const char *file, const TMD5 *md5) |
Writes checksum in ASCII format to specified file. | |
Private Member Functions | |
void | Decode (UInt_t *out, const UChar_t *in, UInt_t len) |
Decodes input into output. Assumes len is a multiple of 4. | |
void | Encode (UChar_t *out, const UInt_t *in, UInt_t len) |
Encodes input into output. Assumes len is a multiple of 4. | |
void | Transform (UInt_t buf[4], const UChar_t in[64]) |
The core of the MD5 algorithm, this alters an existing MD5 hash to reflect the addition of 16 longwords of new data. | |
Private Attributes | |
UInt_t | fBits [2] |
temp buffer | |
UInt_t | fBuf [4] |
UChar_t | fDigest [16] |
string representation of digest | |
Bool_t | fFinalized |
UChar_t | fIn [64] |
temp buffer | |
Char_t | fString [33] |
temp buffer | |
Friends | |
Bool_t | operator== (const TMD5 &m1, const TMD5 &m2) |
Compare two message digests for equality. | |
#include <TMD5.h>
TMD5::TMD5 | ( | ) |
TMD5::TMD5 | ( | const UChar_t * | digest | ) |
TMD5::TMD5 | ( | const TMD5 & | md5 | ) |
const char * TMD5::AsString | ( | ) | const |
|
static |
|
inlinestaticconstexpr |
|
inlinestatic |
|
static |
Returns checksum of specified file.
The returned TMD5 object must be deleted by the user. Returns 0 in case the file does not exists or in case of error. This function preserves the modtime of the file so it can be safely used in conjunction with methods that keep track of the file's modtime. Static utility function.
Returns checksum of specified file in digest argument.
Returns -1 in case of error, 0 otherwise. This method preserves the modtime of the file so it can be safely used in conjunction with methods that keep track of the file's modtime. Static utility function.
void TMD5::Final | ( | ) |
void TMD5::Final | ( | UChar_t | digest[16] | ) |
|
inlinevirtual |
|
static |
Returns checksum stored in ASCII in specified file.
Use to read files created via WriteChecksum(). The returned TMD5 object must be deleted by the user. Returns 0 in case the file cannot be opened or in case of error. Static utility function.
Int_t TMD5::SetDigest | ( | const char * | md5ascii | ) |
|
virtual |
|
inline |
Writes checksum in ASCII format to specified file.
This file can directly be read by ReadChecksum(). The md5 must have been finalized. Returns -1 in case file cannot be opened or in case of error, 0 otherwise. Static utility function.
|
private |