2012-04-10 22 views
7

Bunun nasıl yapılacağına dair tek bir örnek bulamıyorum. PGP şifreli XLS dosyam ve PGP anahtarım var. Aynı anahtar kullanılarak Windows GNU Privacy Yardımcısı denilen bir programda bu dosyanın şifresini açabiliyorumRuby gpgme ile PGP şifrelenmiş dosyanın nasıl çözüleceği

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 

: Burada boş bir dize döndürür benim kodudur oluyor. Herhangi bir yardım takdir edilir.

cevap

6

Daiki Ueno, Yakut gpgme geliştiricisi GitHub'dan bana ulaştı:

hattı decrypted = ctx.decrypt encrypted_data sonra decrypted.seek(0) ekleyerek

sorunu bunun için

+1

Teşekkür çözmek gibi görünüyor. Bazen GPGME'nin "E" si, 'Enigmatic' – aidan

+0

@Vincent 'in obj, uid_hint, passphrase_info, prev_was_bad, fd parametrelerinin ne anlama geldiğini hissederim. Benim durumumda, istemci sadece ortak anahtar-özel anahtarını ve şifrelenmiş dosyayı paylaştı. – VKatz

+0

@Vincent, Lütfen yardımınızı verin. arasında. – VKatz

İlgili konular