我找不到一个如何做到这一点的例子.我有一个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的程序中解密此文件.任何帮助表示赞赏.
解决方法
Ruby gpgme的开发人员Daiki Ueno在GitHub上与我联系:
adding
decrypted.seek(0)
after the linedecrypted = ctx.decrypt encrypted_data
seems to solve the problem