C++获取文件哈希值(hash)和获取torrent(bt种子)磁力链接哈希值
C++获取文件哈希值(hash)和获取torrent(bt种子)磁力链接哈希值
发布时间:2016-12-28 来源:查字典编辑
摘要:复制代码代码如下://CHash.h:headerfile#pragmaonce#include"sha1.h"#defineSIZE_OF...

复制代码 代码如下:

// CHash.h : header file

#pragma once

#include "sha1.h"

#define SIZE_OF_BUFFER 16000

class CHash

{

// Construction

public:

CString SHA1Hash(CString strHashFile);

};

复制代码 代码如下:

// CHash.cpp : implementation file

//

#include "stdafx.h"

#include "CHash.h"

#include <atlconv.h>

CString CHash::SHA1Hash(CString strHashFile)

{

USES_CONVERSION;

FILE *fileToHash = NULL;

unsigned long lenRead = 0;

unsigned char fileBuf[SIZE_OF_BUFFER];

sha1_ctx m_sha1;

unsigned char* tempOut = new unsigned char[256];

CString tempHash;

CString outHash;

sha1_begin(&m_sha1);

fileToHash = fopen(T2A(strHashFile), "rb");

do

{

lenRead = fread(fileBuf, 1, SIZE_OF_BUFFER, fileToHash);

if(lenRead != 0)

{

sha1_hash(fileBuf, lenRead, &m_sha1);

}

} while (lenRead == SIZE_OF_BUFFER);

fclose(fileToHash); fileToHash = NULL;

sha1_end(tempOut, &m_sha1);

for (int i = 0 ; i < 20 ; i++)

{

char tmp[3];

_itoa(tempOut[i], tmp, 16);

if (strlen(tmp) == 1)

{

tmp[1] = tmp[0];

tmp[0] = '0';

tmp[2] = '';

}

tempHash += tmp;

}

delete[] tempOut;

outHash = tempHash;

return outHash;

}

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新C语言学习
热门C语言学习
编程开发子分类