87 lines
2.0 KiB
C++
87 lines
2.0 KiB
C++
#include "sgu_stdafx.h"
|
|
#include "sgu_mode_hash_file.h"
|
|
|
|
bool md5File(const char* szFileName, MD5Digest& result)
|
|
{
|
|
if (!szFileName || szFileName[0]==0) {
|
|
printf("Error: Input filename is not specified.\n");
|
|
return false;
|
|
}
|
|
FILE* file = nullptr;
|
|
fopen_s(&file, szFileName, "rb");
|
|
if (!file) {
|
|
printf("Error: Cannot open input file %s for reading.\n", szFileName);
|
|
return false;
|
|
}
|
|
|
|
const size_t kBufferSize = 1024;
|
|
size_t readSize = 0;
|
|
uint8_t* buffer = new uint8_t[kBufferSize];
|
|
|
|
MD5Context ctx;
|
|
md5Init(&ctx);
|
|
|
|
while ((readSize = fread(buffer, 1, kBufferSize, file)) > 0)
|
|
{
|
|
md5Update(&ctx, (uint8_t*)buffer, readSize);
|
|
}
|
|
result = md5Finalize(&ctx);
|
|
fclose(file);
|
|
|
|
delete[] buffer;
|
|
return true;
|
|
}
|
|
|
|
bool sha256File(const char* szFileName, Sha256Digest& result)
|
|
{
|
|
if (!szFileName || szFileName[0] == 0) {
|
|
printf("Error: Input filename is not specified.\n");
|
|
return false;
|
|
}
|
|
FILE* file = nullptr;
|
|
fopen_s(&file, szFileName, "rb");
|
|
if (!file) {
|
|
printf("Error: Cannot open input file %s for reading.\n", szFileName);
|
|
return false;
|
|
}
|
|
const size_t kBufferSize = 1024;
|
|
size_t readSize = 0;
|
|
uint8_t* buffer = new uint8_t[kBufferSize];
|
|
Sha256Context ctx;
|
|
sha256Initialise(&ctx);
|
|
while ((readSize = fread(buffer, 1, kBufferSize, file)) > 0)
|
|
{
|
|
sha256Update(&ctx, (uint8_t*)buffer, readSize);
|
|
}
|
|
sha256Finalise(&ctx, result);
|
|
fclose(file);
|
|
delete[] buffer;
|
|
return true;
|
|
}
|
|
|
|
bool crc32File(const char* szFileName, uint32_t& result)
|
|
{
|
|
if (!szFileName || szFileName[0] == 0) {
|
|
printf("Error: Input filename is not specified.\n");
|
|
return false;
|
|
}
|
|
FILE* file = nullptr;
|
|
fopen_s(&file, szFileName, "rb");
|
|
if (!file) {
|
|
printf("Error: Cannot open input file %s for reading.\n", szFileName);
|
|
return false;
|
|
}
|
|
const size_t kBufferSize = 1024;
|
|
size_t readSize = 0;
|
|
uint8_t* buffer = new uint8_t[kBufferSize];
|
|
|
|
result = 0;
|
|
while ((readSize = fread(buffer, 1, kBufferSize, file)) > 0)
|
|
{
|
|
result = crcMemory32(buffer, static_cast<uint32_t>(readSize), result);
|
|
}
|
|
|
|
fclose(file);
|
|
delete[] buffer;
|
|
return true;
|
|
} |