Я хочу зашифрувати файл за допомогою AES-256. Як я можу це зробити швидко та легко, і як я можу - чи хтось інший - розшифрувати це знову?
Я хочу зашифрувати файл за допомогою 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 байтами! Якщо ви збираєтеся передавати файли з кимось іншим, ваш спільний секрет повинен бути дуже сильним. Ви можете використовувати цей сайт, щоб зрозуміти, наскільки хороший ваш пароль:
Попередження: Я перевірив, що ці сайти не надсилають ваш пароль на сервер, але це може змінитися в будь-який час. Використовуйте ці сайти за допомогою інструментів розробника / інспектора і перевірте, чи вони щось надсилають, перш ніж вводити надійний пароль.
/usr/bin/openssl enc -aes-256-cbc -a -salt -in $1 -out ${1}.enc
із зворотним, як ви очікували.
openssl
командного рядка здебільшого є підтвердженням концепції тестування бібліотеки OpenSSL. Правильна відповідь на це питання - або GPG, або якийсь архіватор, наприклад 7z .
openssl enc
насправді це не так безпечно, якщо у вас слабкий пароль. Раніше я рекомендував певне використання openssl enc
, але тепер пропоную використовувати gpg
замість цього, оскільки він краще використовує KDF. Дивіться цю відповідь .
Мені подобається використовувати 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 )
AES
(означає AES-128). AES-128 трохи швидший і не менш безпечний.
gpg
кешування паролем?
7z (коли використовується параметр пароля ) використовує 256-бітове шифрування AES (з розтягуванням ключа SHA256 ).
Встановіть його ( p7zip-full
), клацніть правою кнопкою миші на файл або каталог, який ви хочете зашифрувати, та оберіть Compress , .7z та інші параметри / пароль .
Для розшифрування натисніть правою кнопкою миші на .7z файл і виберіть тут Витягнути .
Пов'язаний веб-сайт містить 256-розрядний інструмент шифрування / розшифрування AES з відкритим кодом і є багатоплатформою - MacO, 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
Завантажте бінарні файли або вихідний код з веб-сайту.
Дуже багато пропозицій, які я висловив би, були викладені в цій темі. В основному, openssl - це дійсно найпростіший спосіб піти на шифрування файлу чи сценарію. Однак я б застеріг від використання AES-256 лише тому, що він доступний не у всіх версіях openssl на деяких платформах. Більшість нових ОС ... тобто Linux має. Але інші, такі як AIX 5.3, ні (я думаю, що HP-UX також). Якщо ви плануєте використовувати свій файл або сценарій на різних платформах, я настійно рекомендую використовувати AES-128, оскільки це доступно скрізь.
Як можна «швидко та легко» зашифрувати файл за допомогою AES-128?
Сайт на зразок www.ShellScrypt.com досить інтенсивно використовує openssl AES-128 для шифрування скриптів оболонки, а потім робить зашифровані копії скриптів виконуваними. Все, що вам потрібно зробити - це вставити скрипт на сайт, і для вас буде створено поштовий файл. Цей 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:~$
Додаючи відповідь Стефано Палацо, я створив невелику функцію bash, яка працює аналогічно команді base64.
Він aes256 зашифрує файл, а потім base64 кодує його. Роблячи реверс, він буде базовим64 розшифровувати, розшифровувати, а потім виплювати початковий простий текст.
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 aes-256-cbc
коротшеopenssl enc -aes-256-cbc
і теж працює. Сторінка з цим посібником доступна, запустившиman enc
. Ніколи не використовуйтеecb
для даних, які не слід загартовувати, завжди використовуйтеcbc
.-salt
є зайвим, оскільки це за замовчуванням. Якщо ви пропустите,-out filename
вихід буде записаний на стандартний вихід, що корисно, якщо вам просто потрібно проаналізувати дані, але не записати їх на диск. Наступна команда , показує cound лінії для відкритого тексту:openssl aes-256-cbc -d -in filename | wc -l
. (Інше використання, читання файлу:openssl aes-256-cbc -d -in filename | less
)