c++ - openssl - 无法计算许多文件的哈希
问题描述
我编写了一个函数来查找系统中的所有文件,然后将它们的路径放入哈希函数(一个小函数)中。我的程序适用于许多第一个文件(约 4000 个文件)。之后,我编码的哈希函数无法从文件中计算哈希。
我在 Code::block 17.12 中编码。使用 openssl 库中的 SHA。
哈希函数:
int hashcompute(TCHAR *fpath, char *rs) {
unsigned char data[1024*8] = {0};
size_t length, bytes;
unsigned char hash[SHA_DIGEST_LENGTH] = {0};
FILE *fp;
SHA_CTX context;
if(!SHA1_Init(&context))
return 0;
fp = fopen(fpath, "rb");
if (fp == NULL) return 0;
while( (bytes = fread(data, 1, 1024*8, fp))) {
length = sizeof(data);
if(!SHA1_Update(&context, (unsigned char*)data, bytes)) return 0;
}
if(!SHA1_Final(hash, &context))
return 0;
close(fp);
for(int i = 0; i < 20; i++) {
// printf("%02x", hash[i]);
snprintf((char*)&rs[i*2], length-1, "%02x", hash[i]);
}
if (hash == 0) return 0;
return 1;
}
一些输出:
Hash: b6d437b942194b19f45015d22d5bc4ab98058038
Result:
Hash: 45031c9a127520c68fb9bf3d19b680525126ab5e
Result:
Hash: 07aea0a3345938068b6e6e91f18edf7a6947a2b9
Result:
Hash: 2e6c38958917fb86f09026d41337c7460efbe5f5
Result:
Hash: fae05ccc1af5711590b68344822febd90049c958
Result:
Hash: 5bf7594ebe9d3b75a790f30046995502b3e5b2b7
Result:
Hash:
Result:
Hash:
Result:
Hash:
Result:
Hash:
Result:
Hash:
解决方案
推荐阅读
- python - Python selenium按类单击按钮不起作用
- node.js - 节点流管道异常处理:如何确定哪个流引发了错误
- php - PHP缺少参数,但没有错过,它只发生在生产中
- jquery - 如何在 Laravel SQL 选择中显示列排除 1 个或多个列?
- flutter - 如何在(Flutter)中仅将新值存储到 sqflite 数据表
- javascript - 在 setTimeout 中为 setTimeout 和 setImmediate 获得不同的结果
- python - 如何从 Python 中的函数返回我的变量?
- python - ValueError:从 api 获取数据时出错,没有返回。阿尔法优势
- java - 使用 rxJava 搜索编辑文本。如何转换代码片段?
- node.js - 将nodejs应用程序推送到heroku时出错