如何使用Ruby gpgme解密PGP加密文件

8

我找不到任何一个如何实现这个的示例。我有一个PGP加密的XLS文件和一个PGP密钥。以下是我的代码,它返回一个空字符串:

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

我可以在Windows上使用同一密钥,在名为GNU Privacy Assistant的程序中解密此文件。欢迎任何帮助。
1个回答

7

Daiki Ueno,Ruby gpgme的开发者在GitHub上联系我:

decrypted = ctx.decrypt encrypted_data这行代码后面添加decrypted.seek(0)似乎可以解决问题。


1
谢谢。有时候我觉得 GPGME 中的“E”代表“神秘”。 - aidan
@Vincent,obj、uid_hint、passphrase_info、prev_was_bad、fd参数是什么意思?在我的情况下,客户端只共享了公钥-私钥和加密文件。 - Gupta
@Vincent,请提供帮助,我有些卡住了! - Gupta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接