You are here

Шифрование и расшифровывание файлов публичными ключами с помощью OpenSSL из командной строки

admin's picture

Из-за особенностей алгоритма RSA, с его помощью невозможно шифровать большие файлы. Наиболее эффективное использование RSA - шифрование случайного пароля, с последующим шифрованием файла паролем с помощью алгоритма симметричного шифрования. Если файл больше, чем размер ключа, то команда шифрования завершится ошибкой.

  • openssl genrsa: Создание приватных ключей RSA.
  • openssl rsa: Управление приватными ключами RSA (включая создание публичного ключа из приватного).
  • openssl rsautl: Шифрование и расшифровывание файлов ключами RSA.

Первая команда сгенерирует закрытый ключ private.pem, вторая создаст открытый ключ public.pem:

  • openssl genrsa -out private.pem -aes256 2048
  • openssl rsa -in private.pem -pubout -out public.pem

Получение публичного ключа из сертификата:

  • openssl rsa -in certificate.pem -out public.pem -outform PEM -pubout

Создание случайного файла пароля

  • openssl rand -base64 128 -out key.bin

Шифрование файла случайным ключом

  • openssl enc -aes-256-cbc -salt -in largefile.pdf -out largefile.pdf.enc -pass file:./key.bin

Шифрование случайного ключа файлом публичного ключа

  • openssl rsautl -encrypt -inkey public.pem -pubin -in key.bin -out key.bin.enc

Расшифровывание случайного ключа при помощи файла своего приватного ключа

  • openssl rsautl -decrypt -inkey private.pem -in key.bin.enc -out key.bin

Расшифровывание большого файла случайным ключом

  • openssl enc -d -aes-256-cbc -in largefile.pdf.enc -out largefile.pdf -pass file:./key.bin
В результате получим расшифрованный большой файл.
Tags: