Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不使用Java.Runtime在Java中解密gpg_Java_Rsa_Gnupg - Fatal编程技术网

不使用Java.Runtime在Java中解密gpg

不使用Java.Runtime在Java中解密gpg,java,rsa,gnupg,Java,Rsa,Gnupg,我有一个.gpg文件和一个RSA私钥。我如何在不使用操作系统的情况下对其进行编程解密?e、 g.不使用类似于Runtime.getRuntime().exec(“gpg-decrypt….”)的东西 我发现所有的库都运行操作系统。与或类似。该库提供(除其他功能外)OpenPGP实现。包org.bouncycastle.openpgp.examples包含几个使用示例,其中一个示例展示了如何使用公钥/密钥对加密/解密文件(您可以查看上或上的示例)。该库提供了(除其他功能外)openpgp实现。包o

我有一个.gpg文件和一个RSA私钥。我如何在不使用操作系统的情况下对其进行编程解密?e、 g.不使用类似于
Runtime.getRuntime().exec(“gpg-decrypt….”)的东西


我发现所有的库都运行操作系统。与或类似。

该库提供(除其他功能外)OpenPGP实现。包
org.bouncycastle.openpgp.examples
包含几个使用示例,其中一个示例展示了如何使用公钥/密钥对加密/解密文件(您可以查看上或上的示例)。

该库提供了(除其他功能外)openpgp实现。包
org.bouncycastle.openpgp.examples
包含几个使用示例,其中一个示例展示了如何使用公钥/密钥对加密/解密文件(您可以查看上或上的示例)。

正如Skyr提到的:bouncycastle是一个不错的选择

你想用这把钥匙做什么?如果你的目标是加密或解密文件,你可能想看看(无耻的插件:我写的)

使用密钥实际上需要三个步骤

  • 解析密钥并将其放入
    PGPSecretKeyRing
  • 从密钥环中提取密钥
  • 用密码解密它
  • 1.解析导出的密钥 在任何情况下,请在此处查找:


    3.解密密钥 稍后你必须:


    正如Skyr所提到的:Bouncy Castle是一个不错的选择

    你想用这把钥匙做什么?如果你的目标是加密或解密文件,你可能想看看(无耻的插件:我写的)

    使用密钥实际上需要三个步骤

  • 解析密钥并将其放入
    PGPSecretKeyRing
  • 从密钥环中提取密钥
  • 用密码解密它
  • 1.解析导出的密钥 在任何情况下,请在此处查找:


    3.解密密钥 稍后你必须:


    我用PGP在Bouncy Castle上试过的例子太多了。常见的问题是在KeyRing中找不到keyID

    所以,我发现@Jens的gpg很有弹性(不确定他是否还保持着它)

    这是他在github.io上的文档。这是简单的遵循和工作!

    我用PGP在Bouncy Castle上试过的例子太多了。常见的问题是在KeyRing中找不到keyID

    所以,我发现@Jens的gpg很有弹性(不确定他是否还保持着它)

    这是他在github.io上的文档。这是简单的遵循和工作!

    试过了吗?需要密码短语而不是密钥,@Mortezashahrarinia:BouncyCastle支持GPG使用的所有加密方法。是否尝试过?需要密码而不是密钥,@Mortezashahrarinia:BouncyCastle支持GPG提供的所有加密方法。您不能将maven jar添加到公共maven存储库中吗?我不想添加额外的存储库。上次我查看时,在maven central中添加一些东西真的很麻烦。因为jcenter是maven central的超集,所以这是获得广泛分布的最简单方法。但任何公关都是受欢迎的!是的,要把它放在Maven回购协议上有一些要求。但是谢谢你的图书馆。非常简单。你不能在一个公共的maven存储库中添加你的maven jar吗?我不想添加额外的存储库。上次我查看时,在maven central中添加一些东西真的很麻烦。因为jcenter是maven central的超集,所以这是获得广泛分布的最简单方法。但任何公关都是受欢迎的!是的,要把它放在Maven回购协议上有一些要求。但是谢谢你的图书馆。很简单,见
    class ...
    
    private PGPSecretKeyRingCollection secretKeyRings = new PGPSecretKeyRingCollection(EMPTY_LIST);
    
     ...
    
    /**
     * Add a new secret keyring to the public keyrings.
     * .
     * Can read the result of "gpg --export" and "gpg --export -a keyid"
     * .
     * E.g. "gpg --export-secret-key -a keyid":
     * addSecretKey("-----BEGIN PGP PRIVATE KEY BLOCK----- ....".getBytes("US-ASCII")
     * <p>
     * The password is queried via the callback (decryptionSecretKeyPassphraseForSecretKeyId).
     *
     * @param encodedPrivateKey the key ascii armored or binary
     * @throws IOException  IO is dangerous
     * @throws PGPException E.g. this is nor a valid key
     */
    public void addSecretKey(byte[] encodedPrivateKey) throws IOException, PGPException {
    
        if (encodedPrivateKey == null) {
            throw new NullPointerException("encodedPrivateKey must not be null");
        }
    
        try (
                final InputStream raw = new ByteArrayInputStream(encodedPrivateKey);
                final InputStream decoded = org.bouncycastle.openpgp.PGPUtil.getDecoderStream(raw)
        ) {
            PGPSecretKeyRing pgpPrivate = new PGPSecretKeyRing(decoded, getKeyFingerPrintCalculator());
            this.secretKeyRings = PGPSecretKeyRingCollection.addSecretKeyRing(this.secretKeyRings, pgpPrivate);
        }
    }
    
           final PGPSecretKeyRingCollection pgpSec = ...
           final PGPSecretKey encryptedKey = pgpSec.getSecretKey(keyID);
    
     /**
     * Decrypt an encrypted PGP secret key.
     *
     * @param encryptedKey An encrypted key
     * @param passphrase   The passphrase for the key
     * @return the decrypted secret key
     * @throws PGPException E.g. wrong passphrase
     */
    public static PGPPrivateKey extractPrivateKey(PGPSecretKey encryptedKey, final char[] passphrase) throws PGPException {
        LOGGER.debug("Extracting secret key with key ID '0x{}'", Long.toHexString(encryptedKey.getKeyID()));
    
        PGPDigestCalculatorProvider calcProvider = new JcaPGPDigestCalculatorProviderBuilder()
                .setProvider(BouncyCastleProvider.PROVIDER_NAME).build();
    
        PBESecretKeyDecryptor decryptor = new JcePBESecretKeyDecryptorBuilder(
                calcProvider).setProvider(BouncyCastleProvider.PROVIDER_NAME)
                .build(passphrase);
    
        return encryptedKey.extractPrivateKey(decryptor);
    }