gpt4 book ai didi

ruby - 如何使用 OpenPGP 和 Ruby 对数据进行非对称加密?

转载 作者:数据小太阳 更新时间:2023-10-29 08:05:16 25 4
gpt4 key购买 nike

这感觉应该非常简单,但我没有任何运气。

场景是这样的:我有一个公开的 *.asc key 文件。我想使用这个文件(不是我的个人 key 环)来加密服务器上的数据,这样我就可以在本地用 key 解密它。

在命令行中,我可以使用 gpg 实现这一点,但我更喜欢使用 Ruby 库,它不仅仅是 CLI 的包装器(即,可能提供绑定(bind)到C 库)。我查看了 GPGME 和 OpenPGP gem,但一直无法弄清楚如何使用它们。文档(尤其是 OpenPGP)非常稀少。

例如,这是我使用 GPGME 尝试过的东西,但没有任何运气:

key = GPGME::Data.new(File.open(path_to_file))
data = GPGME::Data.new("I want to encrypt this string.")

# Raises GPGME::Error::InvalidValue
GPGME::Ctx.new do |ctx|
e = ctx.encrypt(key, data)
end

有没有人已经经历过这个?这肯定不会那么复杂吧?

最佳答案

相信我现在已经弄明白了。实际上,我只是遗漏了一些简单的部分:

  1. 使用 GPGME::KEYLIST_MODE_EXTERNkeylist_mode 初始化 GPGME::Ctx 对象。
  2. 使用 GPGME::Ctx#import 导入公钥文件。
  3. 使用 GPGME::Crypto#encrypt 执行加密并指定正确的接收者。

所以我的解决方案现在看起来像这样:

key = GPGME::Data.new(File.open(path_to_file))
data = GPGME::Data.new("I want to encrypt this string.")

GPGME::Ctx.new(GPGME::KEYLIST_MODE_EXTERN) do |ctx|
ctx.import(key)
crypto = GPGME::Crypto.new(:armor => true, :always_trust => true)
e = crypto.encrypt(data, :recipients => "recipient@domain.com")
end

关于ruby - 如何使用 OpenPGP 和 Ruby 对数据进行非对称加密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11548337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com