【问题标题】:How to decrypt a GPG file using BouncyCastle without passphrase如何使用没有密码的 BouncyCastle 解密 GPG 文件
【发布时间】:2017-02-13 14:01:05
【问题描述】:

我想使用 BouncyCastle 从 Java 中解密 GPG 文件。我发现的所有示例都需要密码,但这不适用于我们的用例。可以使用以下命令从命令提示符下解密该文件:

gpg --output test.csv.zip --decrypt test.csv.zip.gpg

在将gpg --import 用于公钥和私钥后,此方法有效。

如何使用 BouncyCastle 做到这一点?我是否需要公钥,因为我想我只需要私钥来解密?

【问题讨论】:

  • 嗨,Jeroen,我遇到了与您的线程中描述的完全相同的问题 - 尽管这是一个相当古老的线程 - 您还记得您是否已经解决了吗?谢谢! :)
  • 恐怕我没有。对不起,我帮不了你。

标签: java bouncycastle gnupg


【解决方案1】:

根据这个(希望没有过时)example,你应该可以做到这一点。

RSADecryption rsaDecryption = new RSADecryption();
privateKeyFilename = args[0].trim();
encryptedData = args[1].trim();
rsaDecryption.decrypt(privateKeyFilename, encryptedData);

该示例希望您传递两个参数;第一个是私钥文件名;然后将加密数据作为字符串。可能不完全是您正在寻找的东西,但足以让您继续前进。

如果还不行,您可以查看给定here 的更复杂的示例。

【讨论】:

    【解决方案2】:

    如果有人仍然面临同样的问题,这可能会有所帮助。我试图解密一个没有密码的文件(它是一个空字符串),但我在方法中的类 org.bouncycastle.openpgp.PGPSecretKey 中遇到错误

    public PGPPrivateKey extractPrivateKey(
            PBESecretKeyDecryptor decryptorFactory)
    

    以下情况除外:

    Exception in thread "main" java.lang.NoSuchMethodError: org.bouncycastle.util.BigIntegers.modOddInverse(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
        at org.bouncycastle.bcpg.RSASecretBCPGKey.<init>(Unknown Source)
        at org.bouncycastle.openpgp.PGPSecretKey.extractPrivateKey(Unknown Source)
        at com.hp.etl.pipeline.utils.pgptool.KeyFilesOperationsPgpImpl.getPrivateKey(KeyFilesOperationsPgpImpl.java:318)
        at com.hp.etl.pipeline.utils.pgptool.PGPDecryptor.decrypt(PGPDecryptor.java:134)
        at com.hp.etl.pipeline.utils.PGPUtils.decryptRoutine(PGPUtils.java:107)
        at com.hp.etl.pipeline.utils.PGPUtils.decryptPGPFile(PGPUtils.java:56)
        at com.hp.etl.pipeline.connectors.sftp.SFTPConnector.getPGPDecryptedFiles(SFTPConnector.java:392)
        at com.hp.etl.pipeline.connectors.sftp.SFTPConnector.downloadFiles(SFTPConnector.java:292)
        at com.hp.etl.pipeline.connectors.sftp.SFTPConnector.retrieveS3FileNames(SFTPConnector.java:235)
        at bmttest.BMTTest.main(BMTTest.java:90)
    

    我使用的是 Maven 工件 org.bouncycastle » bcpg-jdk15on version 1.68,在将 Maven 工件降级到 version 1.63 后,可以使用空密码短语毫无问题地解密文件。

    【讨论】:

      猜你喜欢
      • 2018-12-27
      • 2015-04-11
      • 2018-11-06
      • 1970-01-01
      • 2017-09-16
      • 2021-07-12
      • 2019-08-10
      • 2011-08-01
      • 1970-01-01
      相关资源
      最近更新 更多