2014-03-19 1 views
2

PGP 실현을 위해 forge framework을 사용합니다. 따라서 매우 큰 파일 (2GB 이상)을 암호화하고 암호화 된 상태로 유지해야합니다. 가능한 한 작은 RAM 메모리로 사용하고 싶습니다.Forge : 대용량 파일 암호화

가장 좋은 방법은 무엇입니까?

답변

0

암호화 큰 파일 스트림 낮은 메모리 사용량을 기반으로해야합니다, 당신은 노드의 내장 crypto 모듈을 살펴하거나 (예를 들어 file-encryptor) NPM

2

이것은 일반적인 디자인 문제가에 다른 패키지를 시도 할 수 있습니다 - - 위조와 관련이 많지 않습니다. MDG처럼 스트리밍을 사용하여 전체 파일과 암호화 된 파일을 메모리에 보관하지 않아야합니다.

포지의 암호 개체 (참조 : AES)를 사용하면 스트림에서 데이터 청크를 사용할 수 있습니다. cipher.update()을 사용하여 임의로 크기가 지정된 데이터 청크를 스트림에서 암호화 한 다음 cipher.output.getBytes()을 호출하여 내부 버퍼를 지우고 암호화 된 출력을 가져 와서 다른 곳으로 보낼 수 있습니다. 이렇게하면 메모리 사용량이 적게 유지됩니다.

위조 버퍼에서 가져온 바이트는 문자열로 인코딩됩니다. 문자열 인코딩 유형은 node.js가 'binary'로 인식하는 것입니다. (TypedArrays를 지원하지 않는 브라우저의 JS 문자열에서 바이트를 인코딩하는 방법입니다. 많은 브라우저가 위조가 처음 작성된 시점에는 아닙니다.) node.js 서버와 통신하는 경우이 문자열을 'binary'인코딩을 사용하여 Buffer에 넣을 수 있습니다. 다른 서버와 통신하는 경우 전송 전에 base64로 인코딩 할 수 있습니다. forge.util.encode64을 사용하면됩니다.

OpenPGP.js을 확인할 수도 있습니다.