【问题标题】:Decrypt PGP encrypted file with passphrase only in Java仅在 Java 中使用密码解密 PGP 加密文件
【发布时间】:2018-05-22 18:39:10
【问题描述】:

我有一个名为“filename.txt.pgp”的 PGP 文件需要解密。当我从命令行运行解密时,它只要求我输入密码。我使用 gpg 命令:

gpg filename.txt.pgp

密码足够了,我的文件被解密了。我可以阅读它的内容。

现在,我应该用 Java 创建一个实用程序。经过研究,我发现 Bouncy Castle 图书馆是我的最佳选择。但是我能找到的所有 Java 示例都使用了我没有的公钥/私钥文件。

您能帮我举一个仅使用密码解密 PGP 文件的 Java 示例吗?

谢谢。

【问题讨论】:

  • PGP 使用包含您的公钥/私钥的密钥环的概念。您将使用密码访问密钥环(通过 Bouncy Castle APIs)并检索相关密钥(通过 Bouncy Castle APIs),最后解码和解密文件(通过 Bouncy Castle APIs)。 Google 可以为您提供很多示例,例如 stackoverflow.com/questions/6987699/…
  • 我从 FTP 接收文件,我只知道密码。我没有任何钥匙圈。所以,我没有公钥/私钥。密码可以是我的公钥吗?
  • 如果你正在解密一个 pgp 文件,这意味着你给了对方你的公钥并且你的私钥在你的密钥环中(这就是为什么命令行工具只与密码)。在您的主目录中查找名为“.gnupg”的目录 - 这是 gpg 存储密钥环的默认位置。
  • 没有。我是这里的“另一方”。我只收到了文件和密码。然后我安装了一些 PGP 实用程序,这就是我有 gpg 命令的原因。
  • 那么,看起来我收到的短语是来自发件人的 PublicKey,对吧?但是,如果没有任何密钥环之类的东西,我的 Java 程序应该如何在另一台计算机上运行呢?

标签: java encryption bouncycastle pgp


【解决方案1】:

如果您查看 Bouncy Castle 网站的文档部分,他们会说“...看看包中的测试程序...”,他们不是在开玩笑。

如果您查看 Bouncy Castle 的 jar 文件,您会在 \org.bouncycastle\openpgp\examples\ 目录下看到一个名为 "PBEFileProcessor" 的类文件,该文件将在使用他们的库时涵盖基于密码的加密。

这是他们 Github 存储库中同一文件的 link

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    相关资源
    最近更新 更多