Как создать зашифрованный файл большого размера с помощью команды openssl

Этот скрипт должен сделать работу за вас. Не забудьте переключить его с DEBUG на LIVE :

#!/bin/sh

list=`ls *-file.txt | sort -n`

i=1
for f in $list
do
    #DEBUG MODE
    echo "mv $f $i-file.txt"
    #LIVE MODE
    #mv $f $i-file.txt
    i=$(($i + 1))
done

А вот версия без жестко закодированного расширения:

#!/bin/sh

if [ -z $1 ]
then
    echo "
You need to pass a prefix. For example:
 ${0##*/} -file.txt
"
    exit 1
fi

list=`ls *${1} | sort -n`

i=1
for f in $list
do
    #DEBUG MODE
    echo "mv $f ${i}${1}"
    #LIVE MODE
    #mv $f ${i}${1}
    i=$(($i + 1))
done
8
05.03.2016, 19:00
1 ответ

Судя по ошибке, ваша копия openssl не скомпилирована или не связана с поддержкой больших файлов. fopen, вероятно, не работает, потому что пытается определить размер файла сразу после его открытия и терпит неудачу.

Тогда хитрость заключается в том, чтобы заставить openssl читать из трубы и писать в трубу. Трубы не имеют размера, и fopen знает это, так что с этим должно быть все в порядке. Тому, что находится на другом конце трубы, не нужно делать ничего особенного, оно просто должно быть проходным фильтром между openssl и реальными файлами. Именно в этом и заключается работа cat. cat, который теперь становится вещью, непосредственно работающей с большим файлом, должен иметь поддержку больших файлов, но как базовая утилита, поставляемая ОС, давайте предположим, что это так.

cat test.img | openssl enc -aes-256-cbc -salt | cat >test.img.enc
3
27.01.2020, 20:13

Теги

Похожие вопросы