Реализация шифрования gpg в Ruby
Попытка конвертировать некоторые старые сценарии оболочки / Unix в Ruby.
У меня есть следующее шифрование файла, которое выполняется с помощью инструмента gpg в Unix. Я могу передать ключ получателя, файл, который я хочу зашифровать, и выходной файл для шифрования pgp.
gpg --recipient "$my_recipient_key" \
--encrypt "$my_file" \
--output "$my_outfile" \
--always-trust \
--compress-algo zip
Что такое эквивалент Ruby для простого шифрования, как указано выше?
После некоторых копаний я вижу:
- OpenPGP популярен, но на сайте RubyGems нет документации, а в других местах встречаются хорошие примеры.
- gpgme кажется популярным и перспективным. Однако, если честно, я новичок в Ruby и, щелкнув по документации (см. Ссылку), я не совсем понимаю, с чего начать (т. Е. Хороший пример был бы неплох).
- Я также вижу другие более мелкие драгоценные камни и библиотеки, которые разработали пользователи, но я ограничен использованием сертифицированных драгоценных камней из базы данных rubyGems, так как это для служебного использования.
Спасибо!
1 ответ
Решение
Я недавно использовал gpgme. Код для шифрования файла выглядел следующим образом
GPGME::Key.import(File.open(path_to_key)) #only needed if the key has not been imported previously
crypto = GPGME::Crypto.new :always_trust => true
File.open(path_to_encrypt) do |in_file|
File.open(output_path, 'wb') do |out_file|
crypto.encrypt in_file, :output => out_file, :recipients => "foo@example.com"
end
end
Возможно, вы захотите знать, что нет ничего "сертифицированного" о том, что находится на rubygems - любой может опубликовать там драгоценный камень (и для этого требуется все 3 минуты)