C++獲取文件哈希值(hash)和獲取torrent(bt種子)磁力鏈接哈希值
// 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] = '\0';
}
tempHash += tmp;
}
delete[] tempOut;
outHash = tempHash;
return outHash;
}
相關(guān)文章
淺析C語(yǔ)言中strtol()函數(shù)與strtoul()函數(shù)的用法
這篇文章主要介紹了淺析C語(yǔ)言中strtol()函數(shù)與strtoul()函數(shù)的用法,注意其將字符串轉(zhuǎn)換成long型的區(qū)別,需要的朋友可以參考下2015-08-08C語(yǔ)言動(dòng)態(tài)內(nèi)存分配函數(shù)的實(shí)現(xiàn)
這篇文章主要介紹了C語(yǔ)言動(dòng)態(tài)內(nèi)存分配函數(shù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05C語(yǔ)言 數(shù)據(jù)結(jié)構(gòu)平衡二叉樹(shù)實(shí)例詳解
這篇文章主要介紹了C語(yǔ)言 數(shù)據(jù)結(jié)構(gòu)平衡二叉樹(shù)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06C語(yǔ)言中的自定義類型之結(jié)構(gòu)體與枚舉和聯(lián)合詳解
今天我們來(lái)學(xué)習(xí)一下自定義類型,自定義類型包括結(jié)構(gòu)體、枚舉、聯(lián)合體,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考2022-06-06C++中實(shí)現(xiàn)隊(duì)列類鏈?zhǔn)酱鎯?chǔ)與棧類鏈?zhǔn)酱鎯?chǔ)的代碼示例
這篇文章主要介紹了C++中實(shí)現(xiàn)隊(duì)列類鏈?zhǔn)酱鎯?chǔ)與棧類鏈?zhǔn)酱鎯?chǔ)的代碼示例,通過(guò)注釋來(lái)說(shuō)明,直接上代碼,簡(jiǎn)單粗暴XD 需要的朋友可以參考下2016-03-03C語(yǔ)言編程數(shù)據(jù)結(jié)構(gòu)的棧和隊(duì)列
本篇文章是C語(yǔ)言編程篇,主要為大家介紹C語(yǔ)言編程中的數(shù)據(jù)結(jié)構(gòu),詳細(xì)的講解了數(shù)據(jù)結(jié)構(gòu)的棧和隊(duì)列有需要的朋友可以借鑒參考下,希望可以有所幫助2021-09-09C語(yǔ)言實(shí)現(xiàn)六邊形掃雷游戲的示例代碼
所謂六邊形掃雷,就是沒(méi)有掃雷模式的消零算法,每一個(gè)安全的點(diǎn)都需要單獨(dú)挖出來(lái),一次顯示一個(gè)格子,感興趣的小伙伴可以跟隨小編一起了解一下2022-12-12一文詳解C++中的轉(zhuǎn)換構(gòu)造函數(shù)
在 C/C++ 中,不同的數(shù)據(jù)類型之間可以相互轉(zhuǎn)換,無(wú)需用戶指明如何轉(zhuǎn)換的稱為自動(dòng)類型轉(zhuǎn)換(隱式類型轉(zhuǎn)換),需要用戶顯式地指明如何轉(zhuǎn)換的稱為強(qiáng)制類型轉(zhuǎn)換,本文就給大家詳細(xì)介紹一下C++的轉(zhuǎn)換構(gòu)造函數(shù),需要的朋友可以參考下2023-09-09