00001
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