c#在提取之前获取嵌入式资源的md5哈希值

时间:2011-04-08 07:19:17

标签: c# hash md5 embedded-resource

我们有一个嵌入式资源,需要在提取之前获取文件的md5哈希,以便知道它是否与现有文件不同,(因为如果我们必须提取它来比较它们会更好直接替换文件)

感谢任何建议

2 个答案:

答案 0 :(得分:6)

它是什么类型的嵌入式资源?如果它是一个你使用Assembly.GetManifestResourceStream(),那么最简单的方法是:

using (Stream stream = Assembly.GetManifestResourceStream(...))
{
    using (MD5 md5 = MD5.Create())
    {
        byte[] hash = md5.ComputeHash(stream);
    }
}

如果这没有帮助,请提供有关您如何访问/提取资源的更多信息。

答案 1 :(得分:0)

您可以使用MemoryStream

using (MemoryStream ms = new MemoryStream(Properties.Resources.MyZipFile))
{
  using (System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create())
  {
     byte[] hash = md5.ComputeHash(ms);
     string str = Convert.ToBase64String(hash);
     // result for example: WgWKWcyl2YwlF/C8yLU9XQ==
  }
}