문제

2GB만큼 큰 파일의 서명을 확인해야하며 가능한 한 메모리 효율적인 방식으로 그렇게하고 싶습니다. 여러 가지 이유로 파일은 이미 메모리에 완전히로드되며 InputStream 응용 프로그램에 의해. 스트림 인터페이스를 사용하여 서명을 확인하고 싶지만 JCA Signature 수업' update 메소드 만 허용합니다 byte[] 및 관련 수업.

어떻게 효율적으로 할 수 있습니까? 나는 짐승을 두 번째 바이트 배열에로드하고 싶지 않습니다. 그렇지 않으면 우리는 심각하게 높은 메모리 사용을 볼 수 있지만 인터페이스는 그렇지 않으면 그것을 지원하지 않는 것 같습니다.

업데이트

중요하다면 서명 알고리즘은 SHA-1입니다

도움이 되었습니까?

해결책

한 번에 입력 스트림을 블록 (4096Bytes 또는 편리한 크기)을 읽으십시오. 각 블록에 대해 update ()를 호출하십시오.

다른 팁

바이트 배열을 만듭니다 완충기 입력 스트림에서 한 번에 버퍼를 읽고 매번 서명에서 update ()를 호출하십시오. 버퍼가 합리적인 크기 인 경우, CPU 시간은 한 프로세스에서 다른 프로세스에서 다른 프로세스로 데이터를 전송하는 데 소비되는 시간이 소비됩니다 (내가하고있는 일이라고 생각합니까?)는 계산 시간에 비해 무시할 수 있다고 생각합니다. 디스크에서 읽은 경우 CPU 사용에 대한 무시할만한 반환에 대한 컷오프 지점은 약 8K의 버퍼 크기로 보이며, 이것이 귀하의 경우에도 적용될 것으로 생각됩니다. (흥미로운 경우, 내가 함께 한 페이지를 참조하십시오. 입력 스트림 버퍼 크기.)

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