就像Skyr提到的:弹力城堡是一条可以走的路。
你想用这把钥匙做什么?如果您的目标是加密或解密文件,您可能想看看bouncy-gpg(无耻的插头:我写的)。
使用秘密密钥实际上是三个步骤
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);
}
我有一个全新的Linux Mint14安装。已安装Thunderbird&Enigmail。 我试着删除我的密钥并重新移植它。我试着改变各种设置。但我想不出问题出在哪里。我以前使用过Linux/Thunderbird/Enigmail,从来没有出现过这个错误。
我的钥匙是这样生成的... (gpg--版本告诉我我使用的是1.4.5和Bouncy Castle 1.47) GPG--Gen-Ley 算法:DSA格式:PKCS#8 然后在最后一行中断: 原因:java.security.invalidKeyException:未知密钥类型传递给了javax.crypto.cipher.init(dashoa13*..)上的org.bouncycastle.j
我对使用bouncy-gpg和PCKS12密钥的加密和描述的实现有麻烦。现在我有了PCKS12密钥(扩展名:.p12)。从这个密钥,我能够获得公钥和私钥。否则,bouncy-gpg需要使用gpg密钥。如何在bouncy-gpg中使用p12文件?如果有任何建议,我将不胜感激。多谢了。
我尝试在服务器上进行gpg加密/解密,对于加密,我使用以下命令行: 我想要找到原因:同一个用户有2个不同的密钥和1个秘密密钥。但现在又出现了一个问题:我删除了错误的键,并再次进行相同的测试。 解密后的答案是: 您需要一个密码短语来解锁用户的密钥:“Droli Mail_Adress”2048位RSA密钥,ID 6D2F1BE9,创建2017-07-19(主密钥ID 09C41BAC) 没有关于gp
本文向大家介绍如何在Linux上使用gpg命令加密和解密文件,包括了如何在Linux上使用gpg命令加密和解密文件的使用技巧和注意事项,需要的朋友参考一下 有很多选择可以保护您的数据。但是,GPG的另一个优势是可以优先加密您的数据并通过Internet安全地传输它们。本文介绍有关–如何在Linux上使用GPG命令加密和解密文件。 要获取有关GPG的更多信息,请使用以下命令– 样本输出应如下所示–
6)当我尝试解密消息时,我得到两个“gpg:[不知道]:无效数据包”消息,解密失败: