c语言如何判断一个文件是否被修改

c语言如何判断一个文件是否被修改,第1张

可以用 文件状态 ,例如 文件建立时间,文件最后一次修改时间,文件最后一次被访问的时间,做判断。

获取文件状态用:

#include <io.h>

int get_namein_time(char *namein, char * ftime){

struct _finddata_t fileinfo

int res,DEBUG=0,flag=0

if ( (res = _findfirst(namein, &fileinfo)) == -1){

if (DEBUG==1) printf("get file info error !\n")

return 0

}

if ( strcmp(namein,fileinfo.name)==0 ) {

flag=1goto Lab

}

do {

if ( strcmp(namein,fileinfo.name)==0 ) {flag=1goto Lab}

} while ( _findnext(res, &fileinfo) ==0)

Lab: strcpy(ftime,ctime(&fileinfo.time_write))

_findclose(res)

return flag

}

最可靠的是用文件的哈希码判断,就是区块链中用的方法。

例如视窗系统,调用系统 Certutil 计算出 文件的 哈希码,与文件原来的码对比。若变了,就是被修改了。

Certutil -hashfile abc.txt MD5 这个检查 文件 abc.txt

Certutil -hashfile XYZ.txt SHA512 这个检查 文件 XYZ.txt

最保险的是保留以前的文件的MD5码,想看文件有没有被改掉就用重新运算一个MD5和原值比较。

文件修改时间可以参考,但是如果对方恶意篡改,可以把自己电脑时间调整到文件原来的时间,改动文件并保存后文件的修改时间也看不出变化。

文件大小也可以拿来做个参考依据,但要精确到B。但对方更改后和源文件大小完全一样的情况也是有的,并不保险。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7967601.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存