Шифрование очень большого файла с использованием smime не рекомендуется, поскольку вы можете зашифровать большие файлы с помощью параметра -stream, но не можете расшифровать полученный файл из-за аппаратных ограничений см .: проблема с расшифровкой больших файлов
Как упоминалось выше, криптография с открытым ключом не предназначена для шифрования произвольно длинных файлов. Поэтому следующие команды будут генерировать парольную фразу, шифровать файл с использованием симметричного шифрования, а затем шифровать парольную фразу с использованием асимметричного (открытого ключа). Примечание: 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
Это было проверено на> 5 ГБ файлах.
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