Я хочу зашифровать файл с помощью AES-256. Как я могу сделать это быстро и легко, и как может я - или кто-то еще - дешифрует его снова?
К сожалению, нет никакого легкого решения обеспечения Вашего материала. Думайте о своем примере использования, возможно, что-то другое, чем плоскость, AES лучше подходит.
Если Вы хотите очень простое независимое от платформы шифрование, можно использовать openssl.
Если Вы все еще хотите использовать openssl:
Шифрование:
openssl aes-256-cbc -in attack-plan.txt -out message.enc
Дешифрование:
openssl aes-256-cbc -d -in message.enc -out plain-text.txt
Можно получить openssl к base64
- закодируйте сообщение при помощи -a
включите и шифрование и дешифрование. Таким образом, можно вставить шифрованный текст в электронном письме, например. Это будет похоже на это:
stefano:~$ openssl aes-256-cbc -in attack-plan.txt -a
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
U2FsdGVkX192dXI7yHGs/4Ed+xEC3ejXFINKO6Hufnc=
Обратите внимание, что у Вас есть выбор шифров и режимов работы. Для нормальной эксплуатации я рекомендую aes 256 в режиме CBC. Это режимы шифров, которые Вы имеете в наличии (только подсчет AES):
aes-128-cbc ← this is okay
aes-128-ecb
aes-192-cbc
aes-192-ecb
aes-256-cbc ← this is recommended
aes-256-ecb
См. также:
Пожалуйста, примите во внимание:
OpenSSL попросит у Вас пароля. Это не ключ шифрования, он не ограничен 32 байтами! Если Вы собираетесь передать файлы с кем-то еще, Ваш общий секрет должен быть очень сильным. Можно использовать этот сайт для получения смысла того, насколько хороший пароль:
Предупреждение: Я проверил, что эти сайты не отправляют Ваш пароль на сервер, но это может измениться в любое время. Используйте эти сайты с dev инструментами / инспектор и проверьте, отправляют ли они что-нибудь прежде, чем ввести в Вашем сильном пароле.
7z (когда опция пароля используется) использует Шифрование AES на 256 битов (с ключом SHA256, простирающимся).
Установите его (p7zip-full
), щелкните правой кнопкой по файлу или каталогу, Вы хотите зашифровать, и выбрать Compress.7z и Другие опции,/Password.
Для дешифрования щелкните правой кнопкой по.7z файлу и выберите Extract здесь.
Связанный веб-сайт содержит 256-разрядную AES с открытым исходным кодом, шифруют/дешифруют инструмент, и является многоплатформенным - MacOs, Windows, Linux и другие через Java.
Зашифруйте: aescrypt -e <file>
Дешифруйте: aescrypt -d <file>
Вы могли скопировать и зашифровать свою домашнюю папку с помощью синтаксиса:
tar -cvf - /home/<home_folder> | aescrypt -e -p <password_message> - > backup.tar.aes
Загрузите и извлеките источник
make
sudo make install
Загрузите двоичные файлы или исходный код с веб-сайта.
Мне нравится использовать gpg
команда:
Зашифруйте:
gpg --cipher-algo AES256 --symmetric filename.tar.gz
Стенография:
gpg --cipher-algo AES256 -c filename.tar.gz
Это попросит пароль.
Дешифруйте:
gpg --output filename.tar.gz --decrypt filename.tar.gz.gpg
Стенография:
gpg -o filename.tar.gz -d filename.tar.gz.gpg
Можно также добавить cipher-algo AES256
кому: ~/.gnupg/gpg.conf
сделать AES256 значением по умолчанию. (Согласно странице справочника это - CAST5),
Много предложений, которые я сделал бы, было уже выдвинуто в этом потоке. В основном openssl является действительно самым легким способом пойти о шифровании файла или сценария. Однако я предостерег бы против использования AES-256 просто, потому что это не доступно во всех версиях openssl на некоторых платформах. Большинство более новых Ose... т.е. Linux имеют его. Но другие, такие как AIX 5.3 не делают (я думаю HP-UX также). Если Вы намереваетесь использовать свой файл или сценарий через различные платформы, я настоятельно рекомендую использовать AES-128, потому что это доступно везде.
Как может, Вы "быстро и легко" шифруете файл с помощью AES-128?
Сайт как www.ShellScrypt.com использует openssl AES-128 вполне сильно для шифрования сценариев оболочки и затем делает зашифрованные копии исполняемого файла сценариев. Все, что необходимо сделать, вставить сценарий на сайт, и zip-файл будет сгенерирован для Вас. Тот zip-файл будет содержать зашифрованный (и исполняемый файл, если это будет сценарий), версия Вашего файла. Это позволяет Вам "легко", и "удобно" зашифруйте файл/сценарий, не имея необходимость удовлетворять любой пакет или требование модуля к каждой системе, на которой Вы намереваетесь использовать сценарий или выполнить несколько комплексов и запутывающих заклинаний команд openssl.
Показанный ниже основное, шифруют / дешифруют openssl, управляют что AES-128 использования:
test@test-VirtualBox:~$
test@test-VirtualBox:~$ echo precious-content | openssl aes-128-cbc -a -salt -k mypassword
U2FsdGVkX1+K6tvItr9eEI4yC4nZPK8b6o4fc0DR/Vzh7HqpE96se8Fu/BhM314z
test@test-VirtualBox:~$
test@test-VirtualBox:~$ echo U2FsdGVkX1+K6tvItr9eEI4yC4nZPK8b6o4fc0DR/Vzh7HqpE96se8Fu/BhM314z | openssl aes-128-cbc -a -d -salt -k mypassword
precious-content
test@test-VirtualBox:~$
test@test-VirtualBox:~$
Добавляя к ответу Stefano Palazzo, я создал немного функции удара, которая работает так же к команде base64.
Это будет, aes256 зашифровать файл, и затем base64 кодируют его. При выполнении реверса это будет base64 декодировать, дешифровать и затем выкладывать исходный простой текст.
aes256() {
decodeMe=""
isPipe="$([ ! -t 0 ] && echo "true" || echo "false")"
if [ "$1" = '-d' ] || [ "$1" = '--decode' ]; then
decodeMe="-d"
shift
fi
if [ "$isPipe" = "true" ]; then
read input
printf '%s\n' "$input" | openssl aes-256-cbc -a $decodeMe
exitCode="$?"
else
openssl aes-256-cbc -a $decodeMe -in "$*"
exitCode="$?"
fi
unset isPipe decodeMe input
return "$exitCode"
}
Использование:
echo "my string" | aes256
# enter aes-256-cbc encryption password
# Returns: U2FsdGVkX1++e/BhBGlNOzNvarqq7zI13S/hbiKVzXQ=
echo "U2FsdGVkX1++e/BhBGlNOzNvarqq7zI13S/hbiKVzXQ=" | aes256 -d
# enter aes-256-cbc decryption password
# Returns: my string
aes256 file.plain > file.crypt
# enter aes-256-cbc encryption password
aes256 -d file.crypt
# enter aes-256-cbc decryption password
# Spits out original unencrypted file.
Упоминание последней опции добавлено в openssl
начиная с OpenSSL 1.1.0. Основываясь на ответе stefano-palazzo:
openssl enc -aes-256-cbc -a -e -in input.tar.gz -out oupput.enc -pbkdf2 -iter 1000000 -md sha512
Он использует функцию получения ключа , отсутствие которой значительно упростило бы подбор пароля.
Для расшифровки используйте:
openssl enc -aes-256-cbc -a -d -in output.tar.xz.enc -out output.tar.xz -pbkdf2 -iter 1000000 -md sha512
Объяснение аргументов:
enc
означает шифрование
-aes-256-cbc
является хорошим способом использования AES
шифр
-a
base64 ваши данные после шифрования или до расшифровки
-d
расшифровать
-e
зашифровать
-in
входной файл
-out
выходной файл
-pbkdf2
растягивает ключ, чтобы его было трудно сломать Функция получения ключа
-iter
итерации для растягивания ключа, чем больше, тем выше безопасность и достаточное число описано здесь
-md sha512
заменяет хеш-функцию PBKDF2 на SHA512, которая более безопасна, чем SHA256 по умолчанию
-salt
не упоминается в команде, потому что она установлен по умолчанию и является очень хорошим способом повышения безопасности, почему то описано здесь