문제

파일의 MD5SUM을 계산하기 위해 다음 코드를 사용하고 있습니다.

byte[] b = System.IO.File.ReadAllBytes(file);
string sum = BitConverter.ToString(new MD5CryptoServiceProvider().ComputeHash(b));

이것은 정상적으로 잘 작동하지만 큰 파일 (~ 1GB) (예 : ISO 이미지 또는 DVD VOB 파일이 발생하면 메모리 예외가 발생합니다.

그러나 약 10 초에서 동일한 파일에 대해 Cygwin에서 MD5SUM을 계산할 수 있습니다.

내 프로그램에서 큰 파일 에서이 작업을 수행 할 수있는 방법을 제안하십시오.

감사

도움이 되었습니까?

해결책

대체 방법을 사용하는 것이 좋습니다.

MD5CryptoServiceProvider.ComputeHash(Stream)

파일에 열린 입력 스트림을 전달하십시오. 이 방법은 거의 확실합니다 ~ 아니다 한 번에 메모리의 전체 파일을 읽으십시오.

또한 MD5의 대부분의 구현에서 추가 할 수 있습니다. byte[] 다이제스트에 대한 데이터는 한 번에 덩어리를 작동시킨 다음 끝에 해시를 요청합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top