4

我们需要对文件进行 PGP 加密并通过 FTP 将它们发送给第三方。这些文件使用第三方的 DH/DSS 公钥加密,并使用我们的私钥签名。

第三方拥有我们的公钥和他们自己的私钥。加密/解密有效,但第三方在尝试验证我们的签名时会收到警告。

当我们尝试使用 PGP Desktop 解密和验证类似加密的文件时,文件会在没有警告的情况下进行验证。

第三方正在使用“McAfee E-Business Server”

确切的警告是:警告:签名错误,与文件内容不匹配!来自用户“用户名”的错误签名

代码有点复杂,但我把它贴在了我的博客上。如果更合适的话,我可以在这里发布它而不是链接。

任何有关如何解决此问题的见解都值得赞赏。

4

1 回答 1

2

虽然我无法对问题的细节给出彻底的解释,但这里有一个可行的解决方案。首先,不同的 PGP 实现似乎对使用哪个程序来生成正在使用的密钥非常敏感。

失败的场景:

  1. 在 PGP Desktop 中创建密钥(RSA v4、2048/2048)
  2. 在 BouncyCastle 中加密(DH/DSS、Elgamal)
  3. 登录 BouncyCastle(使用 RSA 密钥)
  4. 在 PGP Desktop 中解密和签名验证成功。
  5. 在 McAfee Business Server 中解密成功但签名验证失败。

为了使 McAfee Business Server 成功验证密钥,请使用 BouncyCastle 源代码中的代码在 BouncyCastle 中创建密钥。(Org.BouncyCastle.Bcp​​g.OpenPgp.Examples.RsaKeyRingGenerator) 如果您需要特定密钥,可以更改此代码特性。

另一种选择是使用 McAfee Business Server 生成密钥。为此,您需要访问该软件。我使用试用版进行了测试。(顺便说一句,起床和跑步时脖子很痛)

更新:我在 E-Business Server 8.5.3(试用版)上进行了所有测试。我达到了可以加密和登录 Bounty 并在 E-Business Server 中解密和验证的地步。结果第三方正在使用拒绝验证签名的 E-Business Server 7.0。为了让一切正常工作,我们需要创建 V3 签名。

我们从:

PgpSignatureGenerator pgpSignatureGenerator = new PgpSignatureGenerator(m_encryptionKeys.SecretKey.PublicKey.Algorithm, HashAlgorithmTag.Sha1);

PgpV3SignatureGenerator pgpV3SignatureGenerator = new PgpV3SignatureGenerator(m_encryptionKeys.SecretKey.PublicKey.Algorithm, HashAlgorithmTag.Sha1);
于 2009-02-09T07:25:57.287 回答