2012-04-10 25 views
7

मैं ऐसा करने के तरीके के एक भी उदाहरण नहीं मिल सकता है। मेरे पास एक पीजीपी एन्क्रिप्टेड एक्सएलएस फ़ाइल और एक पीजीपी कुंजी है।रूबी के साथ पीजीपी एन्क्रिप्टेड फ़ाइल को डिक्रिप्ट कैसे 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 

मैं कहा जाता है विंडोज पर GNU प्राइवेसी सहायक एक ही कुंजी का उपयोग कर एक कार्यक्रम में इस फ़ाइल को डिक्रिप्ट करने में सक्षम हूँ: यहाँ मेरी कोड है कि एक खाली स्ट्रिंग रिटर्न है है। किसी भी मदद की सराहना की है।

उत्तर

6

डैकी Ueno, रूबी gpgme के डेवलपर GitHub पर मुझे संपर्क किया था:

लाइन decrypted = ctx.decrypt encrypted_data के बाद decrypted.seek(0) जोड़ने समस्या को हल करने

+1

इस के लिए धन्यवाद लगता है। कभी कभी मैं GPGME की 'ई' की तरह महसूस 'रहस्यपूर्ण' – aidan

+0

@Vincent obj, uid_hint, passphrase_info, prev_was_bad, fd पैरामीटर है क्या के लिए खड़ा है। मेरे मामले में ग्राहक सार्वजनिक कुंजी-निजी कुंजी और एन्क्रिप्टेड फ़ाइल केवल – VKatz

+0

@Vincent साझा किया है, आपकी मदद मैं एक तरह से फँस गया हूँ प्रदान करें! के बीच में। – VKatz