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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top