我们有一个嵌入式资源,需要在提取之前获取文件的md5哈希,以便知道它是否与现有文件不同,(因为如果我们必须提取它来比较它们会更好直接替换文件)
感谢任何建议
答案 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==
}
}