加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 19:05:05 所属栏目:百科 来源:网络整理
导读:我找不到一个如何做到这一点的例子.我有一个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" i
我找不到一个如何做到这一点的例子.我有一个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 line decrypted = ctx.decrypt encrypted_data seems to solve the problem

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读