7

我找不到一个如何做到这一点的例子。我有一个 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 的程序中解密此文件。任何帮助表示赞赏。

4

1 回答 1

6

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

decrypted.seek(0)在行后添加decrypted = ctx.decrypt encrypted_data似乎可以解决问题

于 2012-04-11T02:24:00.443 回答