c# - SHA256 使用文件的哪些部分来计算哈希值

标签 c# .net sha256

我正在研究通过网络传输文件。传输过程中对数据丢失零容忍。我被要求计算原始文件和复制文件的 SHA256 值以验证内容是否相同。到目前为止,我已经根据复制和粘贴文件进行了比较,并让 Windows 重命名文件并在文件名后附加 -copy。我也试过在上面的重命名之后重命名文件,以及删除文件扩展名。到目前为止,它们都产生相同的散列。我还编写了更改文件属性的代码(只是更改了 lastWrittenTime 和 fileCreationTime),这似乎对哈希没有影响。

Checksum result of copying and pasting a file(explorer appends "-copy to name):

E7273D248F191A0F914837A21BE39D229D790CA242D38651BAA06DAC9EBB63F7
E7273D248F191A0F914837A21BE39D229D790CA242D38651BAA06DAC9EBB63F7

Checksum result of renaming the -copy in explorer:

E7273D248F191A0F914837A21BE39D229D790CA242D38651BAA06DAC9EBB63F7
E7273D248F191A0F914837A21BE39D229D790CA242D38651BAA06DAC9EBB63F7

Checksum result of changing file extension:

E7273D248F191A0F914837A21BE39D229D790CA242D38651BAA06DAC9EBB63F7
E7273D248F191A0F914837A21BE39D229D790CA242D38651BAA06DAC9EBB63F7

创建哈希时使用了文件的哪些部分?

好吧,零容忍有点过了,如果哈希值不匹配,文件将不得不重新发送。

最佳答案

整个二进制文件内容通过散列算法流式传输。文件元数据(例如名称、日期等)不起作用。

关于c# - SHA256 使用文件的哪些部分来计算哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19717294/

相关文章:

.net - Windows SDK 中的 NetFx 是什么?

ruby - Rails 3 - 使用 HMAC-SHA256 签名响应

java - 将 ColdFusion Java 哈希函数移植到 Ruby

hash - Python 与 STM32 内置 HASH 设备中的 SHA256 摘要不一致

c# - 如何最好地并行化网页解析?

c# - 如何在c#中获取字符串中括号内的子字符串?

C# MongoDB 复杂类序列化

c# - ClientScript.RegisterClientScriptBlock?

c# - 有没有办法告诉 Autofixture 只设置具有特定属性的属性?

javascript - 无法调用 Blazor javascript 方法