2012-04-10 22 views
7

Nie mogę znaleźć jednego przykładu, jak to zrobić. Mam zaszyfrowany plik PGS PGP i klucz PGP. Tu jest mój kod, który zwraca pusty ciąg:Jak odszyfrować zaszyfrowany plik PGP za pomocą 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 

jestem w stanie odszyfrować tego pliku w programie o nazwie GNU Privacy Assistant w systemie Windows przy użyciu tego samego klucza. Każda pomoc jest doceniana.

Odpowiedz

6

Daiki Ueno, deweloper Ruby gpgme wyciągnął do mnie na GitHub:

dodanie decrypted.seek(0) po linii decrypted = ctx.decrypt encrypted_data wydaje się rozwiązać problem

+1

Dzięki za to. Czasami mam wrażenie, że "E" GPGME oznacza "Enigmatic" – aidan

+0

@ Vincent co to jest obj, uid_hint, passphrase_info, prev_was_bad, parametry fd. W moim przypadku klient udostępnił klucz publiczny-klucz prywatny i plik zaszyfrowany tylko – VKatz

+0

@Vincent, proszę o pomoc Jestem trochę STUCK! pomiędzy. – VKatz