将文件 MD5 哈希保存到文件元数据

Save file MD5 hash to file metadata

我有大量基于XML的数据文件,内容复杂。目前我正在每次使用时验证内容,这很慢。我开始想我可以有一个实用程序来验证 XML,然后获取文件的 MD5 哈希并将其保存到文件元数据中。然后,在使用时,我可以将保存的哈希值与当前哈希值进行比较,并只验证那些不同的文件。 至少,我可以做一个性能比较,看看它是否真的会更快。 也就是说,我没有找到任何方法将自定义哈希 属性 添加到文件元数据。我想知道是否有更好的方法来做到这一点? 对于其他一些 XML 文件,我正在使用代码签名,但这些是我提供的程序资源 XML 文件。这些其他XML个文件都是客户修改使用的,所以我不能使用代码签名。 我还可以包括一个列出 XML 文件及其相关散列的文本文件,但将散列存储在文件中似乎是一个更优雅的解决方案。似乎 Windows 没有提供自定义元数据选项。至少是本地文件。当然,当文件位于 SharePoint 或 AWS S3 等上时,有各种元数据选项。事实上,我需要能够对文件进行哈希处理并将其作为元数据保存在文件上,并让它在通过云存储库,因为这是我正在寻找的解决“在家工作”问题的解决方案。公司将创建并验证其 XML 文件,然后将它们上传到 S3 存储桶,然后用户计算机上的代码将下载并使用它们。

我走在正确的轨道上,还是死路一条?如果是这样,自签名证书是否可以解决问题?创建您的证书并与用户共享 public 密钥。然后用它签署你的XML。感觉……不太理想。

我确定这种方法确实是死胡同,因为我无法确保文件将始终托管在 NTFS 格式的驱动器上。特别是在较小的公司中,NAS 是一个常见的位置,并且随着在家工作成为一种趋势,本地外部 FAT32 格式的驱动器也是如此。 解决方案是预先验证 XML,获取 XML 的散列作为字符串,然后将该散列添加到属性的根节点。然后 XML 加载代码可以将加载的 XML 传递给一个方法,该方法将该散列的值与相同 XML 的重新散列作为字符串进行比较,但属性已删除。最终结果,一种普遍适用的方法来验证 XML 自预验证以来是否发生了变化。这才是真正的目标。