2010-04-22 5 views
6

J'essaie de crypter des fichiers en utilisant ma clé privée (au format ascii) et toute autre clé publique (également au format ascii). La bibliothèque BouncyCastle ressemble à la bonne chose à utiliser, mais je ne trouve pas de documentation pour C#. Quelqu'un pourrait-il m'aider s'il vous plaît avec un exemple. Je vous remercie.Exemple de cryptage de fichier PGP BouncyCastle en C#

+0

peut-être je ne comprends pas PGP correctement, lorsque vous cryptez un fichier que vous utilisez uniquement le public du 3ème partie clé? Aucune partie de votre clé privée n'est utilisée dans le processus, correct? Si oui, je dois changer ma question « Exemple: comment chiffrer avec 3 partie clé publique et signer avec la clé privée » –

+0

Il est donc avec une cryptographie asymétrique - vous utilisez la clé publique pour le chiffrement et la vérification de la signature, et la clé privée est utilisé pour la signature et le décryptage. –

Répondre

12

Voici du code provenant de l'exemple BouncyCastle. Vous devriez saisir le code source et regarder dans les tests unitaires, ils contiennent des exemples. J'ai trouvé que les ressources Java sont également utiles. L'exemple peut être trouvé dans la source sous Crypto \ test \ src \ openpgp \ examples \ PbeFileProcessor.cs

private static void EncryptFile(
     Stream outputStream, 
     string fileName, 
     char[] passPhrase, 
     bool armor, 
     bool withIntegrityCheck) 
    { 
     if (armor) 
     { 
      outputStream = new ArmoredOutputStream(outputStream); 
     } 

     MemoryStream bOut = new MemoryStream(); 

     PgpCompressedDataGenerator comData = new PgpCompressedDataGenerator(
      CompressionAlgorithmTag.Zip); 

     PgpUtilities.WriteFileToLiteralData(
      comData.Open(bOut), 
      PgpLiteralData.Binary, 
      new FileInfo(fileName)); 

     comData.Close(); 

     byte[] bytes = bOut.ToArray(); 

     PgpEncryptedDataGenerator cPk = new PgpEncryptedDataGenerator(
      SymmetricKeyAlgorithmTag.Cast5, withIntegrityCheck, new SecureRandom()); 

     cPk.AddMethod(passPhrase); 

     Stream cOut = cPk.Open(outputStream, bytes.Length); 

     cOut.Write(bytes, 0, bytes.Length); 

     cOut.Close(); 

     if (armor) 
     { 
      outputStream.Close(); 
     } 
    } 
+1

++ Merci. J'avais des problèmes pour trouver les exemples. – John

Questions connexes