-stream 옵션을 사용하여 대용량 파일을 암호화 할 수 있지만 하드웨어 제한으로 인해 결과 파일을 해독 할 수 없으므로 smime을 사용하여 매우 큰 파일을 암호화하는 것은 권장되지 않습니다 . 큰 파일 해독 문제 참조
위에서 언급했듯이 공개 키 암호화는 임의로 긴 파일을 암호화하기위한 것이 아닙니다. 따라서 다음 명령은 암호 구문을 생성하고 대칭 암호화를 사용하여 파일을 암호화 한 다음 비대칭 (공개 키)을 사용하여 암호 구문을 암호화합니다. 참고 : smime에는 암호 구문을 암호화하기위한 기본 공개 키 및 백업 키 사용이 포함됩니다. 백업 공개 / 개인 키 쌍은 신중할 것입니다.
임의 암호 생성
RANDFILE 값을 현재 사용자가 액세스 할 수있는 파일로 설정하고 passwd.txt 파일을 생성하고 설정을 정리합니다.
export OLD_RANDFILE=$RANDFILE
RANDFILE=~/rand1
openssl rand -base64 2048 > passwd.txt
rm ~/rand1
export RANDFILE=$OLD_RANDFILE
암호화
아래 명령을 사용하여 passwd.txt 내용을 암호로 사용하고 AES256을 base64 (-a 옵션) 파일로 사용하여 파일을 암호화합니다. 기본 공개 키 및 백업 키를 사용하여 비대칭 암호화를 사용하여 passwd.txt를 파일 XXLarge.crypt.pass로 암호화합니다.
openssl enc -aes-256-cbc -a -salt -in XXLarge.data -out XXLarge.crypt -pass file:passwd.txt
openssl smime -encrypt -binary -in passwd.txt -out XXLarge.crypt.pass -aes256 PublicKey1.pem PublicBackupKey.pem
rm passwd.txt
복호화
복호화는 XXLarge.crypt.pass를 passwd.tmp로 복호화하고 XXLarge.crypt를 XXLarge2.data로 복호화 한 다음 passwd.tmp 파일을 삭제합니다.
openssl smime -decrypt -binary -in XXLarge.crypt.pass -out passwd.tmp -aes256 -recip PublicKey1.pem -inkey PublicKey1.key
openssl enc -d -aes-256-cbc -a -in XXLarge.crypt -out XXLarge2.data -pass file:passwd.tmp
rm passwd.tmp
이것은> 5GB 파일에 대해 테스트되었습니다 ..
5365295400 Nov 17 10:07 XXLarge.data
7265504220 Nov 17 10:03 XXLarge.crypt
5673 Nov 17 10:03 XXLarge.crypt.pass
5365295400 Nov 17 10:07 XXLarge2.data