Реализация шифрования gpg в Ruby

Попытка конвертировать некоторые старые сценарии оболочки / Unix в Ruby.

У меня есть следующее шифрование файла, которое выполняется с помощью инструмента gpg в Unix. Я могу передать ключ получателя, файл, который я хочу зашифровать, и выходной файл для шифрования pgp.

gpg --recipient "$my_recipient_key" \
    --encrypt "$my_file" \
    --output "$my_outfile" \
    --always-trust \
    --compress-algo zip

Что такое эквивалент Ruby для простого шифрования, как указано выше?

После некоторых копаний я вижу:

  1. OpenPGP популярен, но на сайте RubyGems нет документации, а в других местах встречаются хорошие примеры.
  2. gpgme кажется популярным и перспективным. Однако, если честно, я новичок в Ruby и, щелкнув по документации (см. Ссылку), я не совсем понимаю, с чего начать (т. Е. Хороший пример был бы неплох).
  3. Я также вижу другие более мелкие драгоценные камни и библиотеки, которые разработали пользователи, но я ограничен использованием сертифицированных драгоценных камней из базы данных 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 минуты)

Другие вопросы по тегам