![如何在不改变属性的情况下破坏文件以进行完整性测试?](https://linux22.com/image/702429/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%8D%E6%94%B9%E5%8F%98%E5%B1%9E%E6%80%A7%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E7%A0%B4%E5%9D%8F%E6%96%87%E4%BB%B6%E4%BB%A5%E8%BF%9B%E8%A1%8C%E5%AE%8C%E6%95%B4%E6%80%A7%E6%B5%8B%E8%AF%95%EF%BC%9F.png)
我正在尝试创建一个流程来比较两个应该包含完全相同文件的文件夹。希望能够修改文件的内容而不更改属性,就像文件意外损坏一样。有什么方法可以实现这一点吗?
答案1
使用磁盘编辑工具找到相关文件的一些块,并更改其内容。谷歌搜索“磁盘十六进制编辑器”等短语即可找到。现在您的文件已损坏,并且您没有使用 OS API 调用,这些调用也会更新文件的时间戳。
答案2
使用 PowerShell 的Get-FileHash
函数。它将根据文件的内容而不是时间戳来计算哈希值。然后您只需FileA
将的哈希值与进行比较FileB
。如果内容相同,则它们应该是相同的哈希值。这样,您就不必担心编辑的文件不同并比较时间戳数据。
来源: https://msdn.microsoft.com/en-us/powershell/reference/6/microsoft.powershell.utility/get-filehash
这获取文件哈希cmdlet 使用指定的哈希算法计算文件的哈希值。哈希值是与文件内容相对应的唯一值。哈希值不是通过文件名、扩展名或其他名称来识别文件内容,而是为文件内容分配一个唯一值。文件名和扩展名可以更改,但文件内容和哈希值不会改变。同样,文件内容也可以更改,但文件名称或扩展名不会改变。但是,即使更改文件内容中的一个字符,也会改变文件的哈希值。
哈希值的目的是提供一种加密安全的方法来验证文件的内容是否未被更改。虽然某些哈希算法(包括 MD5 和 SHA1)不再被视为安全算法,但安全哈希算法的目标是使文件内容无法更改(无论是意外更改,还是恶意或未经授权的尝试更改)并保持相同的哈希值。您还可以使用哈希值来确定两个不同的文件是否具有完全相同的内容。如果两个文件的哈希值相同,则文件的内容也相同。
默认情况下,Get-FileHash cmdlet 使用 SHA256 算法,尽管可以使用目标操作系统支持的任何哈希算法。