微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用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;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐