2012-04-10 10 views
7

Non riesco a trovare un singolo esempio su come farlo. Ho un file XLS crittografato con PGP e una chiave PGP. Qui è il mio codice che restituisce una stringa vuota:Come decifrare il file crittografato PGP con 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 

sono in grado di decifrare il file in un programma chiamato GNU Privacy Assistant su Windows utilizzando la stessa chiave. Qualsiasi aiuto è apprezzato.

risposta

6

Daiki Ueno, lo sviluppatore di Ruby gpgme allungò la mano per me su GitHub:

aggiungendo decrypted.seek(0) dopo la linea di decrypted = ctx.decrypt encrypted_data sembra risolvere il problema

+1

Grazie per questo. A volte mi sembra che la 'E' di GPGME sia l'acronimo di 'Enigmatic' – aidan

+0

@Vincent cosa sono obj, uid_hint, passphrase_info, prev_was_bad, parametri fd. Nel mio caso il client ha condiviso chiave privata chiave privata e file crittografato solo – VKatz

+0

@Vincent, si prega di fornire il vostro aiuto Sono una specie di STUCK! nel mezzo. – VKatz

Problemi correlati