加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

跨平台C++ MD5类库, md5.h

(2005-05-26 11:16:08)
标签:

杂谈

分类: 计算机与 Internet

#ifndef _MD5_H
#define _MD5_H

#pragma warning(disable:4786)

#include <string>
using namespace std;

struct MD5_DATA
{
 unsigned long data[4];
 bool operator < (const MD5_DATA& p) const
 {
  return memcmp(data,p.data,4*sizeof(long))>0;
 }
};

class CMD5
{
private:
 #define uint8  unsigned char
 #define uint32 unsigned long int

 struct md5_context
 {
  uint32 total[2];
  uint32 state[4];
  uint8 buffer[64];
 };

 void md5_starts( struct md5_context *ctx );
 void md5_process( struct md5_context *ctx, uint8 data[64] );
 void md5_update( struct md5_context *ctx, uint8 *input, size_t length );
 void md5_finish( struct md5_context *ctx, uint8 digest[16] );

public:
 //! construct a CMD5 from any buffer
 void GenerateMD5(unsigned char* buffer,size_t bufferlen);

 //! construct a CMD5
 CMD5();

 //! construct a md5src from char *
 CMD5(const char * md5src);

 //! construct a CMD5 from a 16 bytes md5
 CMD5(unsigned long* md5src);

 //! add a other md5
 CMD5 operator +(CMD5 adder);

 //! just if equal
 bool operator ==(CMD5 cmper);

 //! give the value from equer
 // void operator =(CMD5 equer);

 //! to a string
 string ToString();

 unsigned long m_data[4];
};
#endif

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有