使用C#将多个字节[]一起散列成单个散列?

我有三个字段:字符串标题,字节[]正文和字节[]数据,我想从中计算单个散列作为检查,以确保它们没有被篡改或损坏.

Python中,我可以连续使用md5.update()来执行此操作.但是我在C#中找不到类似的功能.要使用MD5.ComputeHash()我需要将所有的源都复制到一个单字节[],这是我想避免的一个步骤.

我如何将它一起散列成一个哈希,而不必将数据复制到临时缓冲区?

解决方法

几乎所有的哈希算法的设计方式都是可以连续地以多个块的形式提供数据.结果与整个数据一次散列的相同.

创建例如MD5CryptoServiceProvider和每个块的TransformBlock Method和最后一个块的TransformFinalBlock Method

MD5 md5 = new MD5CryptoServiceProvider();

// For each block:
md5.TransformBlock(block,block.Length,block,0);

// For last block:
md5.TransformFinalBlock(block,block.Length);

// Get the hash code
byte[] hash = md5.Hash;

相关文章

C#项目进行IIS部署过程中报错及其一般解决方案_c#iis执行语句...
微信扫码登录PC端网站应用的案例(C#)_c# 微信扫码登录
原文地址:http://msdn.microsoft.com/en-us/magazine/cc163...
前言 随着近些年微服务的流行,有越来越多的开发者和团队所采...
最近因为比较忙,好久没有写博客了,这篇主要给大家分享一下...
在多核CPU在今天和不久的将来,计算机将拥有更多的内核,Mic...