标签: pgp

是否可以在提示中不提供密码的情况下导出 GPG 私钥?

我想自动化 GPG 私钥导出,以便它无需用户交互即可运行。

gpg --export-secret-keys my@email.com
Run Code Online (Sandbox Code Playgroud)

我尝试提供--batch --passphrase-fd 0 参数,密码短语传递为:

  • 一个论点--passphrase 'my-passhrase'
  • 来自标准输入echo 'my-passphrase' | gpg ...

它不起作用。是否可以在没有用户交互的情况下导出私钥?

linux gnupg pgp

6
推荐指数
1
解决办法
3983
查看次数

Python和PGP /加密

我想使用python来创建一个通过公钥加密密码的函数.在用户端我需要安装PGP软件,它将生成密钥对.我想只使用公钥加密和私钥进行解密.问题在于加密功能(如何使用密钥进行加密)以及pgp安装.谁能告诉我这样做的正确方法

谢谢

python encryption pgp

5
推荐指数
1
解决办法
3902
查看次数

有没有办法以编程方式获取已安装RPM的签名密钥ID?

如显示rpm -qi package

我真的不想解析输出rpm -qi.我更愿意使用rpm -q --qf,我可以控制格式,并且不会受到未来版本的美学异想天开.

但是我在手册页中找到的唯一有用的标签是SIGPGP,它为我提供了整个签名,而不仅仅是短密钥ID.看到不同:

$ rpm -qi coreutils
Name        : coreutils                    Relocations: (not relocatable)
Version     : 8.4                               Vendor: Fedora Project
Release     : 8.fc13                        Build Date: Tue 20 Jul 2010 05:21:15 AM BRT
Install Date: Tue 03 Aug 2010 01:58:53 PM BRT      Build Host: x86-17.phx2.fedoraproject.org
Group       : System Environment/Base       Source RPM: coreutils-8.4-8.fc13.src.rpm
Size        : 12659257                         License: GPLv3+
Signature   : RSA/SHA256, Tue 20 Jul 2010 03:14:09 PM BRT, Key ID 7edc6ad6e8e40fde
Packager …
Run Code Online (Sandbox Code Playgroud)

linux rpm gnupg pgp digital-signature

5
推荐指数
1
解决办法
1852
查看次数

我们使用BouncyCastle API为客户端加密文件.在尝试解密时,他从PGP获得了"仅供您选择"的消息.为什么?

我们使用Bouncy.Castle C#API进行PGP加密.我绝不是PGP加密专家和各种可用选项.

加密似乎运行正常,但是,当客户端尝试解密时,他说PGP不会输出到文件但只输出到屏幕,因为它标记为"仅供您选择".这是--verbose消息:

pgp --decrypt Client_FileExport_20110510_020011.zip.pgp
  Client_FileExport_20110511_132203.zip.pgp --info verbose

McAfee E-Business Server v8.5 - Full License
(c) 1991-2006 McAfee, Inc.  All Rights Reserved.

Setting temporary directory to C:\DOCUME~1\$963\LOCALS~1\Temp\
Decoding data....

event 1: initial
event 13: BeginLex
event 8: Analyze
File is encrypted.  event 9: Recipients
Secret key is required to read it.
Key for user ID "Client_RSAv4_Key <Bob.Smith@Client.com>"
event 6: Passphrase
You need a pass phrase to unlock your secret key.

Enter pass phrase:

event 23: Decryption

symmetric cipher used: …
Run Code Online (Sandbox Code Playgroud)

c# encryption gnupg pgp

5
推荐指数
1
解决办法
3171
查看次数

在C++中实现公钥加密的简单方法?

我希望能够签署一个文件.我的意思是,收件人可以检查该文件确实来自我,并可以查看其内容.有没有简单的方法在C++中做到这一点?

我刚看了一下维基百科上的PGP文章,但他们在"散列,数据压缩,对称 - 密钥加密,最后是公钥加密"的中间失去了我.理想情况下,我想要一个具有功能signString(string, privateykey)且接收者具有功能的库readSignedString(string, publickey).有什么建议吗?

编辑:

我不确定我是否使用正确的方法,所以这就是我想要做的:

我想在我的桌面应用程序中实现一些简单的盗版保护.因此,当用户购买许可证时,我会向他们发送包含其姓名和电子邮件的签名文件.然后,用户安装该文件,应用程序将其读取:它检查签名有效性并显示名称/电子邮件(在"关于"框中).为了确保破解者无法生成这些文件,我需要确保解密文件的密钥与加密文件的密钥不同.有没有简单的方法来实现这个?

c++ encryption pgp signature

5
推荐指数
2
解决办法
5578
查看次数

何时以及为什么在使用BouncyCastle时使用ArmoredOutputStream装饰OutputStream

我对BouncyCastle和pgp很新.我在互联网上看过很多文章和样本.几乎每个加密样本都包含下面剪切的代码

if (armor) 
        out = new ArmoredOutputStream(out);
Run Code Online (Sandbox Code Playgroud)

似乎我的本地测试通过了护甲和无护甲.我用google搜索但发现很少有用,而ArmoredOutputStream的javadoc只显示这是基本的输出流.

那么有什么区别以及何时使用它?

完整的代码示例:

public static void encryptFile(String decryptedFilePath,
        String encryptedFilePath,
        String encKeyPath,
        boolean armor,
        boolean withIntegrityCheck)            
        throws Exception{

    OutputStream out = new FileOutputStream(encryptedFilePath);
    FileInputStream pubKey = new FileInputStream(encKeyPath);
    PGPPublicKey encKey = readPublicKeyFromCollection2(pubKey);
    Security.addProvider(new BouncyCastleProvider());

    if (armor) 
        out = new ArmoredOutputStream(out);

    // Init encrypted data generator
    PGPEncryptedDataGenerator encryptedDataGenerator =
            new PGPEncryptedDataGenerator(PGPEncryptedData.CAST5, withIntegrityCheck, new SecureRandom(),"BC");

    encryptedDataGenerator.addMethod(encKey);


    OutputStream encryptedOut = encryptedDataGenerator.open(out, new byte[BUFFER_SIZE]);

    // Init compression  
    PGPCompressedDataGenerator compressedDataGenerator = new PGPCompressedDataGenerator(PGPCompressedData.ZIP);
    OutputStream compressedOut = compressedDataGenerator.open(encryptedOut);  

    PGPLiteralDataGenerator …
Run Code Online (Sandbox Code Playgroud)

java encryption bouncycastle pgp openpgp

5
推荐指数
2
解决办法
3952
查看次数

如何使用Bouncycastle Java将PGP公钥存储和读取为字符串?

我一直在尝试创建,编码,存储,检索和解码Bouncy Castle PGP公钥。当我尝试重新读回密钥时,得到的输出似乎是错误的,并且出现了EOFException。该密钥将作为字符串存储在数据库中。

从密钥环中提取原始的RSA加密公共密钥,如下所示:

@SuppressWarnings("unchecked")
public PGPPublicKey getPublicKey() {
    PGPPublicKey pk = null;
    Iterator<PGPPublicKey> it = publicKeyRing.getPublicKeys();
    while (pk == null && it.hasNext()) {
        PGPPublicKey key = it.next();
        if (key.isEncryptionKey()) {
            pk = key;
        }
    }
    return pk;
}
Run Code Online (Sandbox Code Playgroud)

它经过编码,ASCII防护并存储为字符串,如下所示:

    PGPPublicKey contactPK = realContact.getPublicKey();
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    ArmoredOutputStream armored = new ArmoredOutputStream(out);
    contactPK.encode(armored);
    armored.close();
    publicKey = new String(out.toByteArray(), Charset.forName("US-ASCII"));
Run Code Online (Sandbox Code Playgroud)

这给了我一个PGP消息块,在这里我希望有一个PGP公钥块:

----- BEGIN PGP MESSAGE ----- \ n版本:BCPG V1.50 \ n \ nuQINBFO8StkCEACQ4vrDnBTDjEvQkGwrAHuJSBZL8tNLxhZ9B74afhObhLVzW6ZB \ nT3pk / 5XcSPOTvcWd9k1yOKJUabCuF5ixFmMz + niFqUVQTtnl7aqOZ …

java bouncycastle pgp public-key

5
推荐指数
2
解决办法
7463
查看次数

JavaScript:使用openpgp.js解密GnuPG加密文件的内容

我正在尝试使用openpgp.js在JavaScript中为GnuPG加密文件编写示例解密器.

所以我天真地试了一下,甚至没有询问它是否可能.我做了以下页面.

popup.html

<!doctype html>
<!--
-->
<html>
<head>
    <title>Popup</title>
    <script src="openpgp.js"></script>
    <script src="popup.js"></script>
</head>
<body>
    <p>Upload message: </p><input id="message" type="file"/><br>

    <p>Upload secret key: </p><input id="secret" type="file"/><br>

    <p>Secret key password: </p><input id="password" type="password"/><br><br>
    <button id="decrypt">Decrypt</button>
    <p id="output"></p>

    <div id="loadingDiv"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

popup.js

var message = "";
var secret = "";


function readMessage (e) {
    var file = e.target.files[0];
    if (!file) {
        message = "";
    }
    var reader = new FileReader();
    reader.onload = function (e) {
        message = e.target.result; …
Run Code Online (Sandbox Code Playgroud)

javascript gnupg pgp openpgp.js

5
推荐指数
1
解决办法
1560
查看次数

如何以加密方式对分支上的所有提交进行签名?

我有PGP密钥让我通过提交签名git commit -S.为了签署我的最后一次提交,我做了一个git commit -S --amend --no-edit并签署了我的提交.

现在,我想签署分支中的所有提交filtered.

我试过了: git filter-branch --commit-filter 'git commit -S --amend --no-edit'

它给了我一个错误信息:

$ git filter-branch --commit-filter 'git commit --amend --no-edit -S' HEAD
Rewrite 07b0ac12f5fe1d8963d7ae0ac7fbda50cb6e74a9 (1/10)gpg: skipped "Anubhav Saini <IAmAnubhavSaini@users.noreply.github.com>": secret key not available
gpg: signing failed: secret key not available
error: gpg failed to sign the data
fatal: failed to write commit object
could not write rewritten commit
Run Code Online (Sandbox Code Playgroud)

另一个问题:提出另一个git commit --amend --no-edit -S结果:

(filter-test)$ git commit …
Run Code Online (Sandbox Code Playgroud)

git pgp git-filter-branch

5
推荐指数
1
解决办法
561
查看次数

PHP gnupg_addsignkey错误:get_key失败

<?php

$res = gnupg_init();

gnupg_clearsignkeys($res);

$key = get_pub_key();// Value pasted below

$publicImp = gnupg_import($res, $key);

gnupg_addsignkey($res, $publicImp['fingerprint']);

echo gnupg_geterror($res); // Prints `get_key failed`
Run Code Online (Sandbox Code Playgroud)

密钥是从https://www.igolder.com/pgp/generate-key/生成的

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: BCPG C# v1.6.1.0

mQENBF3FXV0BCACy/cvfn5oEZQG+Wz8803XvpHVP0NWwIDAuogOsSfDIZX3xBK4s
Ul8y/aXkhPeK4V+NwurNiGqWQXCg3tKX77pfFGo0iBwDQlACmNhxtga/bkDOROx+
O5Ete2olKJ0qVDJTIpA1XMTZK+dFor8oKDWGlYyZ7w1mVxit65fkmzxIdCKrKxGw
9KqHZDkzCwRlpyZ/cQYVPNrx+9GREal2b+XLN3Y9Lbx2OD5FTxO6tLee2XlQdaXJ
R/hetUnei0hoP3J1Zdp99Qh+SX7cGZ+jUcGSdrDEx8q066Q7473xVDJ3Lr0YG53K
EW3lA5z13IkMFn4Yn6taJgkyF/QJtMDZ0xlTABEBAAG0DEhpQGdtYWlsLmNvbYkB
HAQQAQIABgUCXcVdXQAKCRBYbc/NUpqITuYOB/9br/Oc2ahZrbE/GOUOWQc3Yp26
rE+gcp5OjX0WXHsqfxRpVgIb7Si0hr5PPPiCiahS7n44IfZ0CGFcenhv+Eb93h5t
UtC26LRfv1ACTF7tX0QZAeACvB/npB0MMTO/dlbl6eIBjCKHmGMBMBW8WHG39J0V
m5X4GwX6vdTPWQH5ZbpNQirvhLTdYBw6JGtkU++K1gW9kZcncV+3EsRnHIqF5B1G
LnGBYOm9bAdCz2b6J8dkPqjCA9Uw5mvBI5ikB0NruZH8kXynzibnwTpXTc+N3Dsl
5dlRVPh7bIIpGdOVKWqtdnLpNDiY/dQhhmNJ64ZkXOnMibx0qPNYmy3iIgN/
=pvzn
-----END PGP PUBLIC KEY BLOCK-----
Run Code Online (Sandbox Code Playgroud)

关键信息如下所示。

[fingerprint] => AF4A061F20FFFE141AA366FE586DCFCD529A884E
[keyid] => 586DCFCD529A884E
[timestamp] => 1573215581
[expires] => 0
[is_secret] =>
[invalid] =>
[can_encrypt] => 1
[can_sign] => 1
[disabled] =>
[expired] => …
Run Code Online (Sandbox Code Playgroud)

php cryptography gnupg pgp

5
推荐指数
1
解决办法
94
查看次数