public static string ToMd5Hash(this Stream stream) { var hash = MD5.Create().ComputeHash(stream); var sb = StringBuilderCache.Allocate(); foreach (byte b in hash) { sb.Append(b.ToString("x2")); } return StringBuilderCache.ReturnAndFree(sb); }