2012-04-10 8 views
7

Ich kann kein einziges Beispiel finden, wie dies zu tun ist. Ich habe eine PGP-verschlüsselte XLS-Datei und einen PGP-Schlüssel. Hier ist mein Code, der eine leere Zeichenfolge zurückgibt:Wie entschlüsselt PGP verschlüsselte Datei mit Ruby gpgme

require 'rubygems' 
require 'gpgme' 

def passfunc(obj, uid_hint, passphrase_info, prev_was_bad, fd) 
    io = IO.for_fd(fd, 'w') 
    io.puts "PASSPHRASE" 
    io.flush 
end 

encrypted_data = GPGME::Data.new(File.open("file.xls.pgp")) 
key = GPGME::Data.new(File.open("key.txt")) 

ctx = GPGME::Ctx.new :passphrase_callback => method(:passfunc) 
ctx.import_keys key 

decrypted = ctx.decrypt encrypted_data 

puts decrypted.read 

Ich kann diese Datei in einem Programm entschlüsseln namens GNU Privacy Assistant unter Windows mit dem gleichen Schlüssel. Jede Hilfe wird geschätzt.

Antwort

6

Daiki Ueno, der Entwickler von Ruby gpgme erreicht auf GitHub zu mir:

Zugabe decrypted.seek(0) nach der Zeile decrypted = ctx.decrypt encrypted_data das Problem

+1

Vielen Dank für dieses Problem zu lösen scheint. Manchmal habe ich das Gefühl, dass das 'E' von GPGME für 'Enigmatic' steht. – aidan

+0

@Vincent was sind obj, uid_hint, passphrase_info, prev_was_bad, fd Parameter. In meinem Fall Client hat öffentlichen Schlüssel-privaten Schlüssel und nur verschlüsselte Datei – VKatz

+0

@Vincent geteilt, Bitte geben Sie Ihre Hilfe, die ich irgendwie stuck! zwischen. – VKatz

Verwandte Themen