作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个以自定义文件格式存储的大型数据集(~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/
我在一个 numpy 记录数组中有数据: a = np.array([(29.40818036, '1'), (34.96458222, '2'), (16.05225074, '3'),
我是一名优秀的程序员,十分优秀!