手机
当前位置:查字典教程网 >编程开发 >C语言 >C++获取文件哈希值(hash)和获取torrent(bt种子)磁力链接哈希值
C++获取文件哈希值(hash)和获取torrent(bt种子)磁力链接哈希值
摘要:复制代码代码如下://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++获取文件哈希值(hash)和获取torrent(bt种子)磁力链接哈希值】相关文章:

用c 获取文件MD5值的实现方法

fcntl函数的使用详解

C/C++指针和取地址的方法

浅析C语言位域和位段

C++中的对象指针总结

深入解析C++中的虚函数与多态

C++非递归遍历磁盘文件和递归遍历磁盘文件的程序示例

c++ dynamic_cast与static_cast使用方法示例

深入理解卡特兰数及其应用

ubuntu中打开终端的三种解决方法

精品推荐
分类导航