如何判断二进制文件的哪些部分正在发生变化

如何判断二进制文件的哪些部分正在发生变化

是否有一个工具可以让我查看文件的哪些部分正在被修改?我见过一些工具可以显示硬盘的哪些部分正在被访问,但我希望有一个类似的工具可以用于单个文件,如果存在类似的东西的话。

我正在加密一个文件,我想看看一旦将某个部分写入磁盘,该部分是否会再次更改。例如,一旦文件的第一个 MB 被加密并保存到磁盘,程序继续运行,加密完成后第一个 MB 中的任何内容是否会更新。

作为一些详细的背景信息,我有一个过程,我使用 gpg4win 加密一个非常大的文件(36GB),然后我必须将其通过 FTP 传输到远程服务器。这个过程的两个步骤都需要几个小时,但 FTP 需要的时间更长一些。如果加密只是不断扩展文件,但开头保持不变,那么我可以在文件进入一小段后立即启动 FTP 过程。但是,如果我的加密文件的标题在最后更新,我必须等到该步骤完成后才能开始上传。

答案1

通常这是rsync 喜欢算法

* split a file into blocks of x bytes
* build a hash over these x bytes
* compare the hash for each block between both files
* transfer the changed blocks

这显然只在文件不变的情况下才有效全部写入时块。因此,引述段落需要记住的是:

磁盘加密通常使用专门为应用程序设计的特殊用途模式。可调整的窄块加密模式(LRW、XEX 和 XTS)和宽块加密模式(CMC 和 EME)旨在安全地加密磁盘的扇区。(参见磁盘加密理论)

OpenGPG 是一个混合加密系统(它混合了非对称和对称密码来实现其目标),目前我没有发现有关所用密码及其块级增量应用的任何信息。根据以下观察,您可能需要选择不同的加密解决方案(例如 openssl):http://www.daemonology.net/blog/2009-06-11-cryptographic-right-answers.html

这就是说:

都是用于计算二进制差异并将各部分稍后合并在一起的工具。

有关的:加密数据的增量(delta)备份

相关内容