Hash 上次修改的文件

Hash 上次修改的文件,hash,filesystems,last-modified,Hash,Filesystems,Last Modified,检测文件是否已更改时,使用上次修改的文件(如NTFS)是否安全?如果不是,文件备份应用程序是否总是散列整个文件以检查更改?如果是这样的话,什么样的哈希算法适合这个检查?我不太相信上次修改的时间,因为即使打开一个文件并添加一个字符也会改变它的修改时间。哈希有冲突的问题,所以我建议阅读Rabin的指纹算法 这取决于应用程序的要求。它能容忍误报吗?假阴性 文件上次修改日期不可靠。例如,FTP可以在不更改文件的情况下更改修改日期,或者一个文件可以下载两次,一次在其自身上,在不更改文件的情况下更改修改日期

检测文件是否已更改时,使用上次修改的文件(如NTFS)是否安全?如果不是,文件备份应用程序是否总是散列整个文件以检查更改?如果是这样的话,什么样的哈希算法适合这个检查?

我不太相信上次修改的时间,因为即使打开一个文件并添加一个字符也会改变它的修改时间。哈希有冲突的问题,所以我建议阅读Rabin的指纹算法

这取决于应用程序的要求。它能容忍误报吗?假阴性

文件上次修改日期不可靠。例如,FTP可以在不更改文件的情况下更改修改日期,或者一个文件可以下载两次,一次在其自身上,在不更改文件的情况下更改修改日期。另一方面,有一些实用程序将更改文件,但保留相同的文件上次修改日期


如果在文件发生更改时必须对其执行操作,那么可靠的方法是使用良好的哈希或指纹。这确实需要时间。在不花费太多时间的情况下提高几率的一种方法是将修改的日期与文件大小进行比较,但这也不是万无一失的。

我认为,要习惯设置有效且定期监控的哈希检查。我认为最后一次修改并不像许多人想象的那样安全。坚持检查散列,并使用定期检查的好软件


相信我,一旦你习惯了不选择最容易的路线,并且总是选择最安全的路线,你就会养成良好的习惯,这会把你带到其他安全措施上

哈希是我会使用的(
SHA512
如果你真的担心文件哈希冲突。
md5
如果你不太在意)。同意@Blender。修改后的日期可以更改,而文件的内容实际上不会更改——例如,如果您触摸文件,或者单击“保存”而不做任何更改。像git这样的VCS工具使用哈希(在git的例子中是SHA1),因为两个基本相似的文件不太可能有相同的摘要。如果数据量变大,使用哈希检查文件是否已修改会很耗时。在检查文件修改时,哈希冲突是否是一个现实问题(假设哈希值合适)?如果是,这不意味着随意生成与哈希匹配的内容“容易”吗?指纹可以被视为一个很好的哈希函数,可以保证不发生冲突。它可以唯一地识别可能不需要加密哈希函数的大数据块。许多文件备份应用程序通常通过网络传输修改后的内容,通过下载指纹并与以前的指纹进行比较,可以使用指纹识别来检测文件是否已更改。我的意思是,一旦文件开始增长,生成哈希/指纹需要时间。假设您有1 TB的数据,仅通过SATA 3读取数据至少需要22分钟。因此,如果您经常想检查数据是否已更改,则需要一些其他支持。@ydev,您不能使用哈希来保证没有冲突。如果不存在冲突的可能性,则哈希必须至少与文件一样大(或进行无损压缩)。