GPG从流中解密块

时间:2018-02-14 23:08:49

标签: ruby encryption amazon-s3 gnupg gpgme

我尝试将几个大型对称加密的.csv.gpg(每个40GB +)文件从S3流式传输到gnupg到输出流。

我想使用流处理文件,因此我们永远不需要将整个加密/解密文件下载到磁盘或内存。

这是一个使用AWS Ruby S3 SDK下载对象块并将它们传递给gnupg进行解密的示例,使用带有ruby-gpgme gem的Ruby 2.5.0。

crypto = GPGME::Crypto.new

s3_client.get_object(bucket: BUCKET, key: KEY) do |chunk|
  crypto.decrypt(chunk, password: PASSWORD, output: $stdout)
end

运行时,我会在STDOUT(好!)中看到有效的解密CSV数据,直到它在第一个块结束时失败:

  

〜/ .rvm / gems / ruby​​-2.5.0 / gems / gpgme-2.0.14 / lib / gpgme / ctx.rb:435:在`decrypt_verify':解密失败(GPGME ::错误:: DecryptFailed)

这就是我被困的地方。

  • gnupg可以一次解密块还是在写输出之前必须读取整个文件?
  • 块是否需要具有一定的大小和/或以某种方式划分?

非常感谢任何反馈。

0 个答案:

没有答案