我现在一直在撞墙,试图弄清楚为什么我们的银行无法解密使用BouncyCastle PGP进行单程签名和加密的邮件.该银行正在使用McAfee E-Business Server 8.6进行解密.
数据使用银行的公钥加密,并使用我们的私钥进行签名.
使用我们自己的公钥进行加密,我成功地能够解密并验证使用以下代码生成的文件上的签名.Gnupg可以解密并验证文件就好了.
但是,银行无法解密该文件.我试过先关闭压缩,然后关闭ASCII装甲.这两个选项似乎都不起作用,无论我尝试什么选项,它们总是得到相同的错误消息:
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 "XXXXXXXXX <XXXXXX@XXXX>"
event 6: Passphrase
event 23: Decryption
symmetric cipher used: CAST5
event 3: error -11391
event 2: final
Error decrypting file '/somepath/FILENAME'.
Corrupt data.
Bad packet
exitcode = 32
Run Code Online (Sandbox Code Playgroud)
这是我用来执行单通道符号和加密的代码:
public class PGPService {
private static final Logger log = Logger.getLogger(PGPService.class);
static {
Security.addProvider(new BouncyCastleProvider()); …Run Code Online (Sandbox Code Playgroud) 我一直在浏览Go的软件包文档openpgp,我想我一定错过了一些明显的观点.例如,有一个ReadKeyRing功能,但没有WriteKeyRing.我能,而另一方面,Serialize一个Entity,但我没有办法读回.这里发生了什么?有人真的使用这个包吗?
我PGP使用org.bouncycastle.openpgp.PGPKeyRingGenerator创建了公钥和私钥.在进行GregS建议的更改后,公钥是一个.asc文件,私钥是一个.skr文件.我需要首先将公钥分发给Thunderbird用户,然后再分发给Outlook和其他电子邮件客户端的用户.我阅读了这些用于在thunderbird中接收公钥的指令,但是这些指令仅指定了.asc扩展而没有指定.asc文件的内容/结构.
如何进行设置,以便我的(修改后的?)代码创建一个公钥,Thunderbird的远程用户可以使用该公钥发送加密的电子邮件,然后由我的私钥解密,也可以由(修改后的?)代码创建下面? 接受的答案将包括分步说明,不仅用于对下面的代码进行任何必要的更改,而且还用于设置每个远程Thunderbird用户以利用下面生成的公钥来发送可以被解密的电子邮件.我的应用中的私钥,由下面的(修改后的?)代码创建.
这是我的密钥生成代码的第一个草稿:
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.math.BigInteger;
import java.security.SecureRandom;
import java.util.Date;
import org.bouncycastle.bcpg.ArmoredOutputStream;
import org.bouncycastle.bcpg.HashAlgorithmTags;
import org.bouncycastle.bcpg.SymmetricKeyAlgorithmTags;
import org.bouncycastle.bcpg.sig.Features;
import org.bouncycastle.bcpg.sig.KeyFlags;
import org.bouncycastle.crypto.generators.RSAKeyPairGenerator;
import org.bouncycastle.crypto.params.RSAKeyGenerationParameters;
import org.bouncycastle.openpgp.PGPEncryptedData;
import org.bouncycastle.openpgp.PGPKeyPair;
import org.bouncycastle.openpgp.PGPPublicKeyRing;
import org.bouncycastle.openpgp.PGPKeyRingGenerator;
import org.bouncycastle.openpgp.PGPPublicKey;
import org.bouncycastle.openpgp.PGPSecretKeyRing;
import org.bouncycastle.openpgp.PGPSignature;
import org.bouncycastle.openpgp.PGPSignatureSubpacketGenerator;
import org.bouncycastle.openpgp.operator.PBESecretKeyEncryptor;
import org.bouncycastle.openpgp.operator.PGPDigestCalculator;
import org.bouncycastle.openpgp.operator.bc.BcPBESecretKeyEncryptorBuilder;
import org.bouncycastle.openpgp.operator.bc.BcPGPContentSignerBuilder;
import org.bouncycastle.openpgp.operator.bc.BcPGPDigestCalculatorProvider;
import org.bouncycastle.openpgp.operator.bc.BcPGPKeyPair;
public class RSAGen {
public static void main(String args[]) throws …Run Code Online (Sandbox Code Playgroud) 我是PGP的新手,我正在尝试通过本教程使用GnuPG生成PGP私钥.
基本上,我在命令提示符下键入以下命令(在管理员模式下):
gpg --gen-key然后我输入了命令:
gpg --armor --output pubkey.txt --export 'Encryption purpose'
Run Code Online (Sandbox Code Playgroud)但得到一个
警告:没有导出
信息.
有人能告诉我我做错了什么吗?
此外,我将使用PGP加密webapp下载文件.我打算创建一个Web应用程序,它将生成一个带有随机数的文件,需要加密(在PGP中).然后要解密,我打算创建一个独立的应用程序,它将使用私钥解密文件.所以我的问题是:
是否可以从生成私钥的原始计算机中提取私钥以与其他计算机一起使用,以便其他计算机也可以使用独立应用程序使用原始计算机中的私钥解密文件?
如果这不可能,我如何与解密独立应用程序共享所有计算机的私钥(因为据我所知,独立应用程序需要'一个'私钥来解密文件)?我应该使用多个私钥吗?如何实施?
我想加密一个 xml 文件,我正在使用 gpg4win (kleopatra)。使用 kleopatra 界面,我设置了一个选项来生成扩展名为 pgp 的文件,而不是默认扩展名 gpg。
我正在尝试使用该命令从命令行创建一个 pgp 文件
gpg -r test@test.gr -se C:\temp\myfile.xml
Run Code Online (Sandbox Code Playgroud)
因为我需要在只接受 pgp 的网络应用程序中提交它。我试图在命令中添加一些其他选项,但我总是得到一个 gpg 文件。如何从命令行生成 pgp 文件?
我一直在执行一项任务,使用他发送给我的 asc 文件中的公共 PGP 密钥将文件上传到合作伙伴的 ftp 站点。该文件看起来像这样(大部分密钥被删掉了):
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGP Desktop 10.2.1 (Build 4461)
mQEN... ... ...=K8zL
-----END PGP PUBLIC KEY BLOCK-----
Run Code Online (Sandbox Code Playgroud)
我已经尝试了几个 SFTP 节点包,但似乎没有任何工作。大多数示例使用 .rsa 文件,但我提供的只是这个 .asc 文件。从我的研究中,我可以看到有些人使用了带有此扩展名的文件,但没有人完全解释是如何使用的。
我能够使用 Filezilla 连接到 FTP 站点并收到一条消息,指出主机密钥算法是 ssh-dss 1024 以及 SHA256 和 MD5 指纹。我不确定这是否有帮助。
有没有人有使用 .asc 文件以及如何使用它们建立 SFTP 连接的经验?
编辑:我尝试使用 npm 包sftp-upload和以下代码:
var SftpUpload = require('sftp-upload'), fs = require('fs');
var options = {
host:'ftp.partnersite.com',
username:'TempUserName',
path: './CSV',
remoteDir: '/',
privateKey: fs.readFileSync('pgpkeyfile.asc'),
},
sftp = new SftpUpload(options);
sftp.on('error', …Run Code Online (Sandbox Code Playgroud) 我尝试解决这个 Geocache:
\n\nhttps://www.geocaching.com/geocache/GC67EXW_signaturbruch
\n\n当我尝试解决时,它给了我密码提示gpg message.asc,但当时我不知道正确的密码。
现在我知道了,但无论我如何尝试,它都不会再次提示我输入密码。
\n\n输出如下:
\n\nMartinas-Air:gpg martl$ gpg message.asc\ngpg: WARNING: Kein Kommando angegeben. Versuche zu raten was gemeint ist ...\ngpg: CAST5 verschl\xc3\xbcsselte Daten\ngpg: Verschl\xc3\xbcsselt mit einer Passphrase\ngpg: Entschl\xc3\xbcsselung fehlgeschlagen: Bad session key\nRun Code Online (Sandbox Code Playgroud)\n\n(我使用的是德国 MacOs Mojave,10.14.6,我gpg --version给了我这个:
Martinas-Air:gpg martl$ gpg --version\ngpg (GnuPG/MacGPG2) 2.2.17\nlibgcrypt 1.8.4\nCopyright (C) 2019 Free Software Foundation, Inc.\nLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>\nThis is free software: you are free to change and redistribute …Run Code Online (Sandbox Code Playgroud) 我正在使用 PgpCore nuget 包进行 PGP 加密和解密。
\n\n我遇到的情况如下,我用以下方式加密文件EncryptAndSign如下方法加密文件。
using (PGP pgp = new PGP())\n{\n pgp.EncryptFileAndSign(fileNameToEncrypt, outputFileName, _publicKey, _privateKey, _passPhrase);\n}\nRun Code Online (Sandbox Code Playgroud)\n\n然后我使用以下命令解密加密文件Decrypt然后我使用如下方法
using (PGP pgp = new PGP())\n{\n pgp.DecryptFile(fileNameToDecrypt, outputFileName, _privateKey, _passPhrase);\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我收到错误“未找到消息的密钥。”。
\n\n我怀疑 PrivateKey 和 PublicKey 可能是错误的、被更改的,或者这两种方法中可能使用了不同的值 \xe2\x80\x8b\xe2\x80\x8b 。
\n\n因此,我使用私钥和公钥在名为 PGP Tool 的应用程序中进行了加密过程,并将文件路径写入上面 descrypt 方法的 inputFile 参数中。并且解密过程成功。
\n\nPublicKey 和 PrivateKey 是 API 所有者公司给我的,用于与他们的 API 进行通信。所以我不生成这些键,这两个值 \xe2\x80\x8b\xe2\x80\x8bar 都是以常量方式定义的。
\n\n谢谢。
\n我将从第三方导入一些数据。他们要求我提供他们用来加密数据的 PGP 公钥。我不想在我的计算机上生成密钥对,因此我正在寻找托管解决方案,并想知道我们是否可以使用 AWS KMS(我们已经使用 AWS 服务作为基础设施)。
是否可以使用 KMS 来实现这一点?如果不是,在 AWS 上实现这一目标的好方法是什么?
我想自动化 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 ... 它不起作用。是否可以在没有用户交互的情况下导出私钥?
pgp ×10
encryption ×4
gnupg ×4
bouncycastle ×2
java ×2
openpgp ×2
.net ×1
c# ×1
email ×1
file-upload ×1
geocaching ×1
go ×1
gpg-agent ×1
linux ×1
mcafee ×1
node.js ×1
sftp ×1
sign ×1