我尝试将几个大型对称加密的.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)
这就是我被困的地方。
非常感谢任何反馈。