2010-04-22 15 views
6

Ich versuche, Dateien mit meinem privaten Schlüssel (im ASCII-Format) und jedem anderen öffentlichen Schlüssel (auch im ASCII-Format) zu verschlüsseln. Die BouncyCastle-Bibliothek sieht nach der richtigen Methode aus, aber ich kann keine Dokumentation für C# finden. Könnte mir bitte jemand mit einem Beispiel assistieren. Vielen Dank.Brauchen Sie ein Beispiel für BouncyCastle PGP-Dateiverschlüsselung in C#

+0

vielleicht verstehen PGP Ich bin nicht richtig, wenn Sie eine Datei verschlüsseln Sie nur Sie die dritte Partei öffentlich verwenden Schlüssel? Kein Teil Ihres privaten Schlüssels wird dabei verwendet, richtig? Wenn ja, muss ich meine Frage ändern "Beispiel: wie mit öffentlichen Schlüssel von Drittanbietern zu verschlüsseln und mit privaten Schlüssel zu signieren" –

+0

Es ist so mit jeder asymmetrischen Kryptografie - Sie verwenden öffentlichen Schlüssel für die Verschlüsselung und Signaturprüfung und privaten Schlüssel wird zum Signieren und Entschlüsseln verwendet. –

Antwort

12

Hier ist ein Code aus dem BouncyCastle-Beispiel. Sie sollten den Quellcode greifen und in den Komponententests nachsehen, sie enthalten Beispiele. Ich habe festgestellt, dass Java-Ressourcen auch nützlich sind. Das Beispiel lässt sich in der Quelle unter Krypto \ test gefunden werden \ 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

++ Danke. Ich hatte Probleme, die Beispiele zu finden. – John

Verwandte Themen