一个哈希码计算类
来源:互联网 发布:返利机器人软件多少钱 编辑:程序博客网 时间:2024/04/29 17:19
#ifndef ___GHASH_H___
#define ___GHASH_H___
class CGHash
{
public:
CGHash();
virtual ~CGHash();
void Init();
void Update(const unsigned char *pData, unsigned long uSize);
void FinalToStr(char *strOutput, int nHash);
private:
unsigned long m_hash3;
unsigned long m_hash5;
};
#endif // ___GHASH_H___
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "ghash.h"
CGHash::CGHash()
{
Init();
}
CGHash::~CGHash()
{
Init();
}
void CGHash::Init()
{
m_hash3 = 0;
m_hash5 = 0;
}
void CGHash::Update(const unsigned char *pData, unsigned long uSize)
{
unsigned long i = 0;
for(i = 0; i < uSize; i++)
{
m_hash3 = (m_hash3 << 3) + m_hash3 + pData[i];
m_hash5 = (m_hash5 << 5) + m_hash5 + pData[i];
}
}
void CGHash::FinalToStr(char *strOutput, int nHash)
{
// Do NOT destroy internal hash states here!
if(nHash == 3)
{
sprintf(strOutput, "%02X%02X%02X%02X",
(m_hash3 & 0xFF000000) >> 24,
(m_hash3 & 0x00FF0000) >> 16,
(m_hash3 & 0x0000FF00) >> 8,
m_hash3 & 0x000000FF);
}
if(nHash == 5)
{
sprintf(strOutput, "%02X%02X%02X%02X",
(m_hash5 & 0xFF000000) >> 24,
(m_hash5 & 0x00FF0000) >> 16,
(m_hash5 & 0x0000FF00) >> 8,
m_hash5 & 0x000000FF);
}
}
- 一个哈希码计算类
- 一个经纬度相关计算的C++类
- 精确计算的一个类用BigDecimal
- 一个计算脚本运行时间的类
- 类的一个实例--计算周长
- 一个经纬度相关计算的C++类
- 计算一个字符串
- 彩票的一个计算
- 计算一个数字位数
- 计算windows一个文件大小
- 一个数组计算平均值
- 编写一个计算长方体体积的C#WindowsForm,包含一个类,一个方法,三个属性
- Java中精确计算的一个类用BigDecimal
- 一个定积分计算的类的实现!经典!
- 一个可以计算字符串和文件的MD5的类
- 封装的一个计算日期的类_DateCalculate
- 用java设计一个员工类,可以计算工资个人所得税
- 定义一个计算游泳池过道和栅栏造价的类
- WinCE6.0bootloader的研究
- 有关希望
- DbUnit入门实战(转载)
- JDK 1.5增加for循环
- 禁用Dropbear中DNS反向查询连接客户端地址补丁
- 一个哈希码计算类
- FireBird数据库设计技巧
- c# .net 不规则窗体,无毛边
- 在vc中如何用post方法提交表单
- 八大Flex布局规则
- Delphi的IDHTTP的基本用法
- ASP.NET 导出Excel 80070005错误
- linux --time_t类型
- 动态加载JS脚本的4种方法