Как я могу вычислить контрольную сумму объекта IFormFile

У меня есть файл объекта в виде IFormFile, Мне нужно рассчитать контрольную сумму этого файла. Как я могу это сделать.

public string FindChecksum (IFormFile file){

  // How to calculate the checkSum

  return "THE CHECKSUM";
}

2 ответа

Я бы сделал что-то подобное.

Я предполагал, что вы получите данные в аргументе файла IFromFile.

public IActionResult IndexPost(IFormFile file)
        {
            Stream st =  file.OpenReadStream();
            MemoryStream mst = new MemoryStream();
            st.CopyTo(mst);            
            return Content(ToMD5Hash(mst.ToArray()));
        }       

        public static string ToMD5Hash(byte[] bytes)
        {
            if (bytes == null || bytes.Length == 0)
                return null;

            using (var md5 = MD5.Create())
            {
                return string.Join("", md5.ComputeHash(bytes).Select(x => x.ToString("X2")));
            }
        }

Другой вариант, на всякий случай, если кто-то сочтет полезным:

      public string CreatePackage(string packageType, IFormFile package)
{
    var hash = "";
    using (var md5 = MD5.Create())
    {
        using (var streamReader = new StreamReader(package.OpenReadStream()))
        {
              hash = BitConverter.ToString(md5.ComputeHash(streamReader.BaseStream)).Replace("-", "");
        }
    } 
    return hash;   
}
Другие вопросы по тегам