![openssl 명령을 사용하여 대용량 암호화 파일을 만드는 방법](https://linux55.com/image/84902/openssl%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%8C%80%EC%9A%A9%EB%9F%89%20%EC%95%94%ED%98%B8%ED%99%94%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EB%A7%8C%EB%93%9C%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
AIX에서 암호화된 파일을 생성하는 동안 다음 오류가 발생합니다.
$ openssl enc -aes-256-cbc -salt -in test.img -out test.img.enc
test.img: Value too large to be stored in data type
14221428:error:0200107F:system library:fopen:Value too large to be stored in:bss_file.c:356:fopen('test.img','r')
14221428:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:358:
test.img 파일 크기는 35GB입니다.
Linux의 100GB 파일에도 동일한 명령이 작동합니다.
답변1
오류에 따르면 귀하의 사본은 openssl
대용량 파일 지원으로 컴파일되거나 링크되지 않았습니다. fopen
아마도 파일을 연 후 파일 크기를 검색하려고 시도하다가 실패하기 때문에 실패할 것입니다.
음, 비결은 openssl
파이프에서 데이터를 읽고 파이프에 쓰는 것입니다. 파이프에는 치수가 없으므로 fopen
이를 알고 있으면 괜찮을 것입니다. 파이프의 다른 쪽 끝에 있는 것들은 복잡한 작업을 수행할 필요가 없으며 openssl
실제 파일 간의 통과 필터 만 있으면 됩니다 . 이것이 cat
바로 일의 전부입니다. cat
는 이제 대용량 파일에 직접 노출되는 기능이 되어 대용량 파일 지원이 필요하지만 운영 체제에서 제공하는 기본 유틸리티로는 지원한다고 가정합니다.
cat test.img | openssl enc -aes-256-cbc -salt | cat >test.img.enc