加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用BouncyCastle C#进行PGP加密会导致签名验证无效密钥警告

发布时间:2020-12-15 17:15:35 所属栏目:百科 来源:网络整理
导读:我们需要PGP加密文件并通过FTP将它们发送给第三方.文件使用第三方的DH / DSS公钥加密,并使用我们的私钥进行签名. 第三方拥有我们的公钥和他们自己的私钥.加密/解密有效,但第三方在尝试验证我们的签名时会收到警告. 当我们尝试使用PGP Desktop解密和验证类似
我们需要PGP加密文件并通过FTP将它们发送给第三方.文件使用第三方的DH / DSS公钥加密,并使用我们的私钥进行签名.

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

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

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

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

代码有点牵扯,但I posted it on my blog.如果更合适,我可以在这里发布而不是链接.

任何关于如何解决这个问题的见解表示赞赏.

解决方法

虽然我无法详细解释问题的细节,但这是一个有效的解决方案.
首先,似乎不同的PGP实现对于使用哪个程序来生成使用中的密钥非常敏感.

失败的情况:

>在PGP Desktop中创建密钥(RSA v4,2048/2048)
>在BouncyCastle中加密(DH / DSS,Elgamal)
>登录BouncyCastle(使用RSA密钥)
> PGP Desktop中的解密和签名验证成功.
>解密成功但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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读