【发布时间】:2019-08-30 19:02:02
【问题描述】:
我正在尝试创建一个解决方案,通过该解决方案计算文件的哈希值,将其存储在 .txt 文件中,并有助于将原始哈希值与同一文件的哈希值进行检查。 else 语句仅返回 2 个字符,但我不确定如何将其合并到散列函数中。
有什么方法可以避免重复else 语句的哈希函数? (我理解它本身有很多问题,但这是我的尝试)..
//CHECK IF HASH FILE ALREADY EXISTS
if(access(hashOutBuf, F_OK) == -1) {
FILE *ftest=fopen(hashInBuf, "rb");
FILE *ftest2=fopen(hashOutBuf, "wt");
//HASH FUNCTION
SHA512_Init (&mdContext);
while ((bytes = fread (data, 1, 1024, ftest)) != 0)
SHA512_Update (&mdContext, data, bytes);
SHA512_Final (c,&mdContext);
for(i = 0; i < SHA512_DIGEST_LENGTH; i++){
fprintf(ftest2, "%02x", c[i]);
printf("%02x", c[i]);
}
fclose (ftest);
fclose (ftest2);
fflush (stdout);
}
//MY (SORRY) ATTEMPT AT TRYING TO CHECK IF HASH IS IDENTICAL
else{
printf("%02x", c[i]);
FILE *ftest2=fopen(hashOutBuf, "r");
sprintf(ch1, "%d", c[i]);
while (!feof(ftest2)){
char ch2[100];
fscanf(ftest2, "%s", ch2);
if(strcmp(ch2, ch1) == 0){
printf("File is identical");
}
else {
printf("File has changed");
printf("%s\n", ch1);
printf("%s", ch2);
}
}
任何提示/指针将不胜感激,我知道除了哈希函数之外它有点混乱 - 我不擅长编码所以提前道歉。
*所有变量之前都已定义(并且可以正常工作,无论如何对于散列函数。使用 openssl。)
【问题讨论】:
-
当然,您可以通过将该代码转换为minimal reproducible example,让每个人都更轻松。
标签: c loops hash while-loop openssl