Exception lors du déchiffrement d’un fichier à l’aide de BouncyCastle PGP

J’essayais de déchiffrer cet exemple de fichier fourni par le client, en utilisant une classe appelée PgpDecrypt. Mais quand le code arrive à cette ligne:

Stream clear = pbe.GetDataStream(privKey); 

il retourne une erreur: exception déchiffrant la clé secrète

Voici mon code de décryptage:

 PgpDecrypt test = new PgpDecrypt(ssortingng.Concat(pathh, "TestDecryptionFile"), ssortingng.Concat(pathh, "mypgpprivatekey.key"), "mypassphrase", @"d:/test/", ssortingng.Concat(pathh, "clientpublickey.key")); FileStream fs = File.Open(ssortingng.Concat(pathh, "TestDecryptionFile"), FileMode.Open); test.Decrypt(fs, @"d:\test\"); 

J’utilise BouncyCastle comme bibliothèque tierce pour .NET.

Toute idée pour résoudre ce problème serait d’une grande aide. Merci d’avance!

Si vous suivez les classes BouncyCastle PGPEncrypt, PGPDecrypt et PGPEncryptionKeys …

Sous la classe PGPEncryptionKeys, ajoutez cette méthode:

 ///  /// Return the last key we can use to decrypt. /// Note: A file can contain multiple keys (stored in "key rings") ///  private PgpSecretKey GetLastSecretKey(PgpSecretKeyRingBundle secretKeyRingBundle) { return (from PgpSecretKeyRing kRing in secretKeyRingBundle.GetKeyRings() select kRing.GetSecretKeys().Cast() .LastOrDefault(k => k.IsSigningKey)) .LastOrDefault(key => key != null); } 

toujours dans la classe PgpEncryptionKeys, assurez-vous que la méthode ReadSecretKey ressemble à ceci:

 private PgpSecretKey ReadSecretKey(ssortingng privateKeyPath, bool toEncrypt) { using (Stream keyIn = File.OpenRead(privateKeyPath)) using (Stream inputStream = PgpUtilities.GetDecoderStream(keyIn)) { PgpSecretKeyRingBundle secretKeyRingBundle = new PgpSecretKeyRingBundle(inputStream); PgpSecretKey foundKey = toEncrypt ? GetFirstSecretKey(secretKeyRingBundle) : GetLastSecretKey(secretKeyRingBundle); if (foundKey != null) return foundKey; } throw new ArgumentException("Can't find signing key in key ring."); } 

^ _ ^