Kim*_*jor 5 c# bouncycastle pgp
我们需要对文件进行 PGP 加密并通过 FTP 将其发送给第三方。文件使用第三方的 DH/DSS 公钥加密,并使用我们的私钥签名。
第三方拥有我们的公钥和他们自己的私钥。加密/解密有效,但第三方在尝试验证我们的签名时会收到警告。
当我们尝试使用 PGP Desktop 解密和验证类似加密的文件时,文件会在没有警告的情况下进行验证。
第三方正在使用“McAfee E-Business Server”
确切的警告是:警告:错误签名,与文件内容不匹配!用户“用户名”的签名错误
代码有点复杂,不过我把它发布到我的博客上了。如果更合适的话,我可以将其发布在这里而不是链接。
任何有关如何解决此问题的见解都将受到赞赏。
虽然我无法对问题的细节给出彻底的解释,但这里有一个可行的解决方案。首先,似乎不同的 PGP 实现对于使用哪个程序来生成正在使用的密钥非常敏感。
失败的场景:
为了使 McAfee Business Server 成功验证密钥,请使用 BouncyCastle 源代码中的代码在 BouncyCastle 中创建密钥。(Org.BouncyCastle.Bcpg.OpenPgp.Examples.RsaKeyRingGenerator) 如果您需要特定密钥,可以更改此代码特性。
另一种替代方法是使用 McAfee Business Server 生成密钥。为此,您需要访问该软件。我用试用版进行了测试。(顺便说一下,起身跑步是一件很痛苦的事情)
更新:我在电子商务服务器 8.5.3(试用版)上进行了所有测试。我已经达到了可以加密和登录 Bounty 并在电子商务服务器中解密和验证的程度。结果第三方使用的是 E-Business Server 7.0,它拒绝验证签名。为了让一切正常工作,我们需要创建 V3 签名。
我们从:
PgpSignatureGenerator pgpSignatureGenerator = new PgpSignatureGenerator(m_encryptionKeys.SecretKey.PublicKey.Algorithm, HashAlgorithmTag.Sha1);
Run Code Online (Sandbox Code Playgroud)
到
PgpV3SignatureGenerator pgpV3SignatureGenerator = new PgpV3SignatureGenerator(m_encryptionKeys.SecretKey.PublicKey.Algorithm, HashAlgorithmTag.Sha1);
Run Code Online (Sandbox Code Playgroud)