加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 03:45:40 所属栏目:百科 来源:网络整理
导读:我有三个字段:字符串标题,字节[]正文和字节[]数据,我想从中计算单个散列作为检查,以确保它们没有被篡改或损坏. 在Python中,我可以连续使用md5.update()来执行此操作.但是我在C#中找不到类似的功能.要使用MD5.ComputeHash()我需要将所有的源都复制到一个单字
我有三个字段:字符串标题,字节[]正文和字节[]数据,我想从中计算单个散列作为检查,以确保它们没有被篡改或损坏.

在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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读