MD5散列图像的问题

时间:2013-12-31 23:58:33

标签: c# .net hash md5

我正在尝试实现与RDP非常相似的东西,只是我想做自己的实现。原因无关紧要。

出于优化原因,我将屏幕划分为几个块(100x100)。所以我只将更改的块发送到客户端,而不是每次都发送整个屏幕。为了检测每个块上的这些变化,我正在比较MD5哈希,问题是即使它正在工作,也会检测到几个块作为更改,即使它们没有被更改。我不明白为什么会这样。

以下是调试图像的链接。查看突出显示的区域,检测到更改的位置以及未检测到任何更改的位置。

enter image description here

这是为图像生成哈希的方法:

private static string GetMd5FromImage(Image image)
        {
            using (var stream = new MemoryStream())
            {
                image.Save(stream, ImageFormat.Jpeg);

                using (var md5 = MD5.Create())
                {
                    var computed = md5.ComputeHash(stream.ToArray());
                    var builder = new StringBuilder();

                    foreach (var t in computed)
                    {
                        builder.Append(t.ToString("X2"));
                    }

                    return builder.ToString();
                }
            }
        }

相同的图像如何生成相同的哈希?我错过了什么?

0 个答案:

没有答案