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

Я хочу зашифровать файл с помощью AES-256. Как я могу сделать это быстро и легко, и как я - или кто-то другой - могу расшифровать его снова?

К сожалению, простого решения для обеспечения безопасности ваших вещей не существует. Подумайте о своем варианте использования, возможно, лучше подойдет что-то другое, кроме простого AES.


Если вам нужно очень простое независимое от платформы шифрование, вы можете использовать openssl.

Пожалуйста, обратите внимание: Вы можете использовать это, чтобы скрыть birthday-gift-ideas.txt от вашего соседа по комнате, но не ожидайте, что он будет защищен от решительного злоумышленника!

  1. Как было указано в комментариях, этот метод использует наивную функцию получения ключа, поэтому ваш пароль должен быть превосходным, чтобы у вас был шанс быть в безопасности.
  2. Кроме того, этот метод не проверяет подлинность зашифрованного текста, что означает, что злоумышленник может изменить или повредить содержимое без вашего ведома.
  3. Для многих типов безопасности шифрования просто недостаточно (например, вы не можете просто использовать шифрование для безопасного обмена данными).

Если вы все еще хотите использовать 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 -aenter aes-256-cbc encryption password:Verifying - enter aes-256-cbc encryption password:U2FsdGVkX192dXI7yHGs/4Ed+xEC3ejXFINKO6Hufnc=

Обратите внимание, что у вас есть выбор шифров и режимов работы. Для обычного использования я рекомендую aes 256 в режиме CBC. Это доступные вам режимы шифрования (только с учетом AES).:

aes-128-cbc ← this is okayaes-128-ecbaes-192-cbcaes-192-ecbaes-256-cbc ← this is recommendedaes-256-ecb

Смотрите также:

Пожалуйста, обратите внимание:

OpenSSL запросит у вас пароль. Это не ключ шифрования, он не ограничен 32 байтами! Если вы собираетесь передавать файлы с кем-то другим, ваш общий секрет должен быть очень надежным. Вы можете использовать этот сайт, чтобы получить представление о том, насколько хорош ваш пароль:

Предупреждение: Я проверил, что эти сайты не отправляют ваш пароль на сервер, но он может измениться в любое время. Используйте эти сайты с помощью dev tools / inspector и проверьте, отправляют ли они что-нибудь, прежде чем вводить свой надежный пароль.

Мне нравится использовать 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 по умолчанию. (Согласно manpage, это БРОСОК5)

7z (когда в пароль используется опция) использует 256-битное шифрование AES (с SHA256 растяжение ключа).

Установите его (p7zip-full), щелкните правой кнопкой мыши на файле или каталоге, который вы хотите зашифровать, и выберите Сжимать, .7z и Другие варианты /Пароль.

enter image description here

Для расшифровки щелкните правой кнопкой мыши на .7z файл и выберите Извлечение здесь.

aescrypt

Связанный веб-сайт содержит 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

установка ubuntu

Загрузите и извлеките исходный код

makesudo make install

другие платформы

Загрузите двоичные файлы или исходный код с веб-сайта.

Многие предложения, которые я бы сделал, уже были высказаны в этой теме. По сути, openssl - это действительно самый простой способ шифрования файла или скрипта. Однако я бы предостерег от использования AES-256 просто потому, что он доступен не во всех версиях openssl на некоторые платформы. Это есть в большинстве новых операционных систем ... то есть в 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 mypasswordU2FsdGVkX1+K6tvItr9eEI4yC4nZPK8b6o4fc0DR/Vzh7HqpE96se8Fu/BhM314ztest@test-VirtualBox:~$test@test-VirtualBox:~$ echo U2FsdGVkX1+K6tvItr9eEI4yC4nZPK8b6o4fc0DR/Vzh7HqpE96se8Fu/BhM314z | openssl aes-128-cbc -a -d -salt -k mypasswordprecious-contenttest@test-VirtualBox:~$ test@test-VirtualBox:~$

Упоминание последней опции, добавленной в openssl начиная с OpenSSL 1.1.0. Основываясь на ответе стефано-палаццо:

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 не упоминается в команде, потому что она установлена по умолчанию и является очень хорошим способом повышения безопасности, почему это описано здесь

В дополнение к ответу Стефано Палаццо я создал небольшую функцию bash, которая работает аналогично команде 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 stringaes256 file.plain > file.crypt# enter aes-256-cbc encryption passwordaes256 -d file.crypt# enter aes-256-cbc decryption password# Spits out original unencrypted file.