Я вважаю за краще скористатися openssl
утилітою, оскільки це здається досить всюдисущим.
Перетворення відкритого ключа та приватного ключа RSA у формат PEM:
$ openssl rsa -in ~/.ssh/id_rsa -outform pem > id_rsa.pem
$ openssl rsa -in ~/.ssh/id_rsa -pubout -outform pem > id_rsa.pub.pem
Шифрування файлу за допомогою відкритого ключа:
$ openssl rsautl -encrypt -pubin -inkey id_rsa.pub.pem -in file.txt -out file.enc
Розшифрування файлу за допомогою приватного ключа:
$ openssl rsautl -decrypt -inkey id_rsa.pem -in file.enc -out file.txt
Але, як коментує Жилл вище, це підходить лише для шифрування файлів, менших за ваш відкритий ключ, тому ви можете зробити щось подібне:
Створіть пароль, зашифруйте файл із ним симетрично та зашифруйте пароль своїм загальнодоступним, зберігаючи його у файлі:
$ openssl rand 64 |
tee >(openssl enc -aes-256-cbc -pass stdin -in file.txt -out file.enc) |
openssl rsautl -encrypt -pubin -inkey id_rsa.pub.pem -out file.enc.key
Розшифруйте парольну фразу за допомогою приватного ключа та використовуйте її для розшифрування файлу:
$ openssl rsautl -decrypt -inkey id_rsa.pem -in file.enc.key |
openssl enc -aes-256-cbc -pass stdin -d -in file.enc -out file.txt
Ви отримаєте два файли, ваш зашифрований файл та зашифровану парольну фразу, але вкладений у сценарій це буде добре працювати.
Ви навіть можете додати tar cvf file file.enc file.enc.key
прибирання.
Оптимально, ви максимально збільшите розмір вашої парольної фрази, а також змінивши rand 64
розмір відкритого ключа.