Computação MD5SUM de arquivos grandes em C #
-
03-07-2019 - |
Pergunta
Eu estou usando seguinte código para MD5SUM de computação de um arquivo -
byte[] b = System.IO.File.ReadAllBytes(file);
string sum = BitConverter.ToString(new MD5CryptoServiceProvider().ComputeHash(b));
Isso funciona bem normalmente, mas se eu encontrar um arquivo grande (~ 1 GB) - por exemplo, uma imagem ISO ou um arquivo de DVD VOB -. recebo uma exceção Out of Memory
Embora, eu sou capaz de calcular a MD5SUM em cygwin para o mesmo arquivo em cerca de 10 seg.
Por favor sugerir como posso chegar a este trabalho para arquivos grandes em meu programa.
Graças
Solução
Eu sugiro usar o método alternativo:
MD5CryptoServiceProvider.ComputeHash(Stream)
e apenas passar em um fluxo de entrada aberta em seu arquivo. Este método irá quase certamente não lido em todo o arquivo na memória de uma vez.
Eu também gostaria de observar que na maioria das implementações de MD5 é possível adicionar dados byte[]
na função de digerir um pedaço de cada vez, e depois pedir o hash no final.