簡體   English   中英

使用BouncyCastle C#進行PGP加密會在簽名驗證時導致無效的密鑰警告

[英]PGP Encryption with BouncyCastle C# causes invalid key warning on signature verification

我們需要PGP加密文件,然后通過FTP將其發送給第三方。 這些文件使用第三方的DH / DSS公鑰加密,並使用我們的私鑰簽名。

第三方擁有我們的公鑰和自己的私鑰。 加密/解密有效,但是第三方在嘗試驗證我們的簽名時會收到警告。

當我們嘗試使用PGP Desktop解密和驗證類似加密的文件時,文件將進行驗證而不會發出警告。

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

確切的警告是:警告:簽名錯誤,與文件內容不符! 用戶“用戶名”的錯誤簽名

該代碼有點涉及,但我將其發布在了自己的Blog上 如果合適的話,我可以在這里發布而不是鏈接。

任何有關如何解決此問題的見解都將受到贊賞。

雖然我無法對問題的細節進行詳盡的解釋,但這是一種有效的解決方案。 首先,似乎不同的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中創建密鑰。屬性。

另一種選擇是使用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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM