MD5.h

00001 // $Id: MD5.h 21 2010-09-05 04:18:17Z cschwarz1 $
00002 
00003 #ifndef BASE_MD5_H
00004 #define BASE_MD5_H
00005 
00006 #include "String.h"
00007 
00008 namespace base {
00010 
00014     class PPBASE_EXPORT MD5 {
00015     public:
00017         MD5();
00018 
00020         MD5(const String &input);
00021 
00023         void add(const void *buffer, size_t len);
00024 
00026         void add(const char *buffer);
00027 
00029         void add(const String &str);
00030 
00032         void finish();
00033 
00035         void get(unsigned char *outputbuf) const;
00036 
00038         void get(unsigned *adata0, unsigned *adata1 = NULL, unsigned *adata2 = NULL, unsigned *adata3 = NULL) const;
00039 
00041         void get(u_longlong_t *adata0, u_longlong_t *adata1 = NULL) const;
00042 
00044 
00047         void getHexStr(char *buf) const;
00048 
00050 
00053         void getHexStr(String &str) const;
00054 
00056         void init();
00057 
00058         typedef unsigned int md5_uint32;   
00059 
00061         struct md5_ctx {
00062             md5_uint32 A;           
00063             md5_uint32 B;           
00064             md5_uint32 C;           
00065             md5_uint32 D;           
00066             md5_uint32 total[2];    
00067             md5_uint32 buflen;      
00068             char       buffer[128]; 
00069         };
00070 
00071     private:
00073         struct md5_ctx _ctx;
00074     };
00075 }
00076 
00077 #endif