Використання OpenSSL для шифрування та розшифрування файлів

Утиліта OpenSSL існує під усі основні операційні системи.

Утиліта працює як у режимі обробки переданих параметрів, і має власний командний режим (консоль).

Отримання допомоги OpenSSL реалізовано дуже дивно. Потрібно вказувати неіснуючий ключ програми, тоді видаватиметься допомога за конкретним режимом. Наприклад, щоб отримати довідку щодо команд OpenSSL, треба дати команду:

Тут "-h" – неіснуюча опція. У відповідь буде виведено:

openssl:Error: '-h' is an invalid command.

asn1parse ca ciphers crl crl2pkcs7

dgst dh dhparam dsa dsaparam

enc engine errstr gendh gendsa

Щоб отримати допомогу по команді, що цікавиться, потрібно вчинити таким же чином:

unknown option '-h'

-out output file

-a/-base64 base64 encode/decode, depending on encryption flag

-k passphrase is the next argument

-kfile passphrase is the first line of the file argument

-md the next argument is the md для використання create a key

від passphrase. See openssl dgst -h for list.

-K/-iv key/iv in hex is the next argument

-[pP] print the iv / key (then exit if -P)

-bufsize buffer size

-engine e use engine e, possibly a hardware device.

-aes-128-cbc -aes-128-cfb -aes-128-cfb1

-aes-128-cfb8 -aes-128-ecb -aes-128-ofb

-aes-192-cbc -aes-192-cfb -aes-192-cfb1

-aes-192-cfb8 -aes-192-ecb -aes-192-ofb

-aes-256-cbc -aes-256-cfb -aes-256-cfb1

-aes-256-cfb8 -aes-256-ecb -aes-256-ofb

-aes128 -aes192 -aes256

-bf-ecb -bf-ofb -blowfish

-cast -cast-cbc -cast5-cbc

-cast5-cfb -cast5-ecb -cast5-ofb

-des-des-cbc -des-cfb

-des-cfb1 -des-cfb8 -des-ecb

-des-ede -des-ede-cbc -des-ede-cfb

-des-ede-ofb -des-ede3 -des-ede3-cbc

-des-ede3-cfb -des-ede3-ofb -des-ofb

-des3 -desx -desx-cbc

-rc2 -rc2-40-cbc -rc2-64-cbc

-rc2-cbc -rc2-cfb -rc2-ecb

-rc2-ofb -rc4 -rc4-40

де "enc" – це команда OpenSSL, а "-h" – неіснуюча опція.

Шифрування та дешифрування файлу

Шифрування файлу виконується наступною командою:

openssl enc -e -aes-256-cbc -pass pass:PASSWORD -in INFILE -out OUTFILE

Дешифрування файлу відбувається так:

openssl enc -d -aes-256-cbc -pass pass:PASSWORD -in INFILE -out OUTFILE

  • Опція -e означає Encrypt, тобто зашифрування.
  • Опція -d означає Decrypt, тобто розшифрування.
  • Опція -aes-256-cbc означає режим шифрування.
  • Опція -pass визначає пароль (тут сам пароль-PASSWORD). Частина опції "pass:" означає режим отримання пароля безпосередньо в команді. Пароль також може бути отриманий зі змінної оточення, файлу, файлового дескриптора (!), зі стандартного потоку. Докладніше написано в man-і.
  • Опції -in та -out задають вхідний та результуючий файл.