gpt4 book ai didi

.net - 计算部分流的 MD5 哈希值

转载 作者:行者123 更新时间:2023-12-04 12:24:37 25 4
gpt4 key购买 nike

我有一个以自定义文件格式存储的大型数据集(~1GB),其中最后 16 个字节是文件所有先前字节的 MD5 哈希。

我想使用 HashAlgorithm.ComputeHash(Stream) 针对嵌入的 MD5 验证此文件的 MD5,但是这将计算整个文件的哈希值,包括最后 16 字节中的哈希值,这显然不起作用。

如何计算流的 PART 的 MD5 哈希?我知道我可以将流读入数组并将其传递给 HashAlgorithm.ComputeHash(Bytes),但是在内存中复制这 1GB 数据的开销令人望而却步。

最佳答案

取自 here您还可以获得其他方法。

制作一个部分文件流类,读取您想要的大小并对其进行散列。

 class PartialFileStream : FileStream
{
public PartialFileStream(string path, FileMode mode, long startPosition, long endPosition): base(path, mode)
{
base.Seek(startPosition, SeekOrigin.Begin);
ReadTillPosition = endPosition;
}

public long ReadTillPosition { get; set; }

public override int Read(byte[] array, int offset, int count)
{
if (base.Position >= this.ReadTillPosition)
return 0;

if (base.Position + count > this.ReadTillPosition)
count = (int)(this.ReadTillPosition - base.Position);

return base.Read(array, offset, count);
}
}

关于.net - 计算部分流的 MD5 哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6041117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com