2013-06-17 10 views
6

Versuch, einige alte Shell/Unix-Skripte in Ruby umzuwandeln.Implementierung der gpg-Verschlüsselung in Ruby

Ich habe die folgende Verschlüsselung einer Datei, die über das GPG-Tool in Unix erreicht wird. Ich kann den Empfängerschlüssel, die Datei, die ich verschlüsseln möchte, und das Outfile übergeben, um etwas zu verschlüsseln.

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

Was ist das Ruby-Äquivalent, um eine einfache Verschlüsselung wie oben zu tun?

Nachdem einige graben tun, ich sehe:

  1. OpenPGP populär ist, aber es gibt keine Dokumentation auf der RubyGems Website und andere Orte sind spärlich mit guten Beispielen.
  2. gpgme scheint beliebt und vielversprechend. Aber ich bin ehrlich, ich bin neu in Ruby und klicke auf die Dokumentation (siehe Link) lässt mich ein wenig verwirrt darüber, wo ich anfangen soll (dh ein gutes Beispiel wäre schön)
  3. sehe ich auch andere kleinere Edelsteine ​​und Bibliotheken, die Benutzer entworfen haben, aber ich bin beschränkt auf die Verwendung von zertifizierten Edelsteinen aus der RubyGems-Datenbank, wie dies für die offizielle Arbeit ist.

Vielen Dank!

Antwort

9

Ich habe vor kurzem gpgme verwendet. Der Code, um eine Datei zu verschlüsseln, sah wie folgt aus

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 => "[email protected]" 
    end 
end 

Vielleicht möchten Sie wissen, dass es nichts „zertifiziert“ über das, was auf rubygems - jeder kann ein Juwel hinterlassen dort (und es nimmt alle 3 Minuten zu tun)

+0

Das hat super funktioniert, danke! – user2490003

+2

Genau wie ich das gehackt habe (https://rubygems.org/gems/rgpg) zusammen in fünf Minuten! :-) –