2010-04-22 12 views
6

Sto provando a crittografare i file usando la mia chiave privata (in formato ASCII) e qualsiasi altra chiave pubblica (anche in formato ASCII). La libreria BouncyCastle sembra la cosa giusta da usare, ma non riesco a trovare la documentazione per C#. Qualcuno potrebbe per favore assistermi con un esempio. Grazie.Bisogno di esempio per BouncyCastle PGP Crittografia file in C#

+0

forse non ci sto capendo PGP in modo corretto, quando si crittografare un file si usa solo pubblico il 3 ° partito chiave? Nessuna parte della tua chiave privata viene utilizzata nel processo, corretta? Se è così, ho bisogno di cambiare la mia domanda in "Esempio: come crittografare con chiave pubblica di terze parti e firmare con chiave privata" –

+0

È così con qualsiasi crittografia asimmetrica: si utilizza la chiave pubblica per la crittografia e la verifica della firma e la chiave privata è usato per la firma e la decrittazione. –

risposta

12

Ecco un codice dall'esempio BouncyCastle. Dovresti prendere il codice sorgente e cercare i test unitari, contengono esempi. Ho trovato che anche le risorse Java sono utili. L'esempio può essere trovato nella sorgente sotto Crypto \ test \ src \ openpgp \ esempi \ 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

++ Grazie. Stavo riscontrando problemi nel trovare gli esempi. – John

Problemi correlati