.NET-HILFE

BouncyCastle C# (Wie es für Entwickler funktioniert)

Veröffentlicht 14. Januar 2024
Teilen Sie:

BouncyCastle C# ist eine umfassende Bibliothek, die eine große Auswahl an kryptografischen Algorithmen und Tools für .NET-Entwickler bietet. Dieser Leitfaden soll Anfängern die Grundlagen von Bouncy Castle näher bringen, seine Möglichkeiten als Sicherheitsanbieter aufzeigen und praktische Beispiele für den täglichen Gebrauch bieten. Wir werden auch lernen, wie wir es mit dem[IronPDF .NET PDF-Bibliothek](/.

Einführung in die Hüpfburg

Bouncy Castle zeichnet sich als leistungsfähige und vielseitige Bibliothek im Bereich der kryptografischen Sicherheit aus. Es handelt sich um ein eingetragenes australisches Wohltätigkeitsprojekt mit dem Ziel, hochwertige Sicherheitsdienste für Java und C# bereitzustellen. Die Bibliothek wird unter einer Lizenz verwaltet, die auf der MIT X Consortium License basiert, die eine weit verbreitete Nutzung und Beiträge fördert.

Den Zweck einer Hüpfburg verstehen

Bouncy Castle dient als Sicherheitsanbieter und bietet eine breite Palette von kryptographischen Algorithmen. Seine Vielseitigkeit erlaubt es, verschiedene Sicherheitsanforderungen zu erfüllen, von der einfachen Verschlüsselung bis hin zu komplexen digitalen Signaturen. Als Anfänger ist es wichtig, den Umfang von Bouncy Castle zu verstehen, um es effektiv in Ihre Projekte zu implementieren.

Erste Schritte mit Bouncy Castle in C#;

Die Implementierung von Bouncy Castle in C# beginnt mit dem Einrichten der Umgebung und dem Verständnis ihrer grundlegenden Komponenten.

Einrichten

Download der Bibliothek: Um loszulegen, laden Sie die neueste Version des Bouncy Castle-Pakets von der offiziellenBouncy Castle Website. Stellen Sie sicher, dass Sie die richtige Version für Ihr Projekt auswählen.

Integrieren Sie in Ihr Projekt: Nach dem Herunterladen integrieren Sie Bouncy Castle in Ihr C#-Projekt. Dazu müssen Sie die Bibliothek in der Regel als Referenz in Ihren Projekteinstellungen hinzufügen.

Sie können es auch mit dem NuGet Package Manager herunterladen und installieren, indem Sie "Bouncycastle" in der Suchleiste des NuGet Package Managers suchen.

BouncyCastle C#(Wie es für Entwickler funktioniert): Abbildung 1 - Herunterladen und Installieren von Bouncy Castle mit NuGet Package Manager durch Suchen von "Bouncycastle" in der Suchleiste von NuGet Package Manager

Beispiel für Grundverschlüsselung

In diesem Beispiel werde ich ein einfaches Verschlüsselungsszenario mit AES demonstrieren(Erweiterter Verschlüsselungsstandard) mit Bouncy Castle in C#.

using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Crypto.Engines;
using Org.BouncyCastle.Crypto.Generators;
using Org.BouncyCastle.Crypto.Modes;
using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.Security;
using System.Text;
public class SimpleEncryption
{
    public static byte[] EncryptData(string message, string password)
    {
        // Generate a random salt
        var salt = new byte[8];
        new SecureRandom().NextBytes(salt);
        // Derive key and IV from the password and salt
        Pkcs5S2ParametersGenerator generator = new Pkcs5S2ParametersGenerator();
        generator.Init(PbeParametersGenerator.Pkcs5PasswordToBytes(password.ToCharArray()), salt, 1000);
        ParametersWithIV keyParam = (ParametersWithIV)generator.GenerateDerivedMacParameters(256 + 128);
        // Create AES cipher in CBC mode with PKCS7 padding
        var cipher = new PaddedBufferedBlockCipher(new CbcBlockCipher(new AesEngine()));
        cipher.Init(true, keyParam);
        // Convert message to byte array and encrypt
        byte[] inputBytes = Encoding.UTF8.GetBytes(message);
        byte[] outputBytes = new byte[cipher.GetOutputSize(inputBytes.Length)];
        int length = cipher.ProcessBytes(inputBytes, 0, inputBytes.Length, outputBytes, 0);
        cipher.DoFinal(outputBytes, length);
        return outputBytes;
    }
}
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Crypto.Engines;
using Org.BouncyCastle.Crypto.Generators;
using Org.BouncyCastle.Crypto.Modes;
using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.Security;
using System.Text;
public class SimpleEncryption
{
    public static byte[] EncryptData(string message, string password)
    {
        // Generate a random salt
        var salt = new byte[8];
        new SecureRandom().NextBytes(salt);
        // Derive key and IV from the password and salt
        Pkcs5S2ParametersGenerator generator = new Pkcs5S2ParametersGenerator();
        generator.Init(PbeParametersGenerator.Pkcs5PasswordToBytes(password.ToCharArray()), salt, 1000);
        ParametersWithIV keyParam = (ParametersWithIV)generator.GenerateDerivedMacParameters(256 + 128);
        // Create AES cipher in CBC mode with PKCS7 padding
        var cipher = new PaddedBufferedBlockCipher(new CbcBlockCipher(new AesEngine()));
        cipher.Init(true, keyParam);
        // Convert message to byte array and encrypt
        byte[] inputBytes = Encoding.UTF8.GetBytes(message);
        byte[] outputBytes = new byte[cipher.GetOutputSize(inputBytes.Length)];
        int length = cipher.ProcessBytes(inputBytes, 0, inputBytes.Length, outputBytes, 0);
        cipher.DoFinal(outputBytes, length);
        return outputBytes;
    }
}
Imports Org.BouncyCastle.Crypto
Imports Org.BouncyCastle.Crypto.Engines
Imports Org.BouncyCastle.Crypto.Generators
Imports Org.BouncyCastle.Crypto.Modes
Imports Org.BouncyCastle.Crypto.Parameters
Imports Org.BouncyCastle.Security
Imports System.Text
Public Class SimpleEncryption
	Public Shared Function EncryptData(ByVal message As String, ByVal password As String) As Byte()
		' Generate a random salt
		Dim salt = New Byte(7){}
		Call (New SecureRandom()).NextBytes(salt)
		' Derive key and IV from the password and salt
		Dim generator As New Pkcs5S2ParametersGenerator()
		generator.Init(PbeParametersGenerator.Pkcs5PasswordToBytes(password.ToCharArray()), salt, 1000)
		Dim keyParam As ParametersWithIV = CType(generator.GenerateDerivedMacParameters(256 + 128), ParametersWithIV)
		' Create AES cipher in CBC mode with PKCS7 padding
		Dim cipher = New PaddedBufferedBlockCipher(New CbcBlockCipher(New AesEngine()))
		cipher.Init(True, keyParam)
		' Convert message to byte array and encrypt
		Dim inputBytes() As Byte = Encoding.UTF8.GetBytes(message)
		Dim outputBytes(cipher.GetOutputSize(inputBytes.Length) - 1) As Byte
		Dim length As Integer = cipher.ProcessBytes(inputBytes, 0, inputBytes.Length, outputBytes, 0)
		cipher.DoFinal(outputBytes, length)
		Return outputBytes
	End Function
End Class
VB   C#

Dieses Codeschnipsel zeigt, wie man eine einfache Verschlüsselungsmethode erstellt. Um die Sicherheit Ihrer Implementierung zu gewährleisten, ist es wichtig, alle Ausnahmen zu behandeln, die möglicherweise ausgelöst werden. Um diese Methode zu verwenden, müssen Sie EncryptData mit der zu verschlüsselnden Nachricht und einem Passwort aufrufen. Zum Beispiel:

string message = "Hello, this is a test message!";
string password = "StrongPassword123";
byte[] encryptedMessage = SimpleEncryption.EncryptData(message, password);
Console.WriteLine("Original Message: " + message);
Console.WriteLine("Encrypted Message: " + BitConverter.ToString(encryptedMessage));
string message = "Hello, this is a test message!";
string password = "StrongPassword123";
byte[] encryptedMessage = SimpleEncryption.EncryptData(message, password);
Console.WriteLine("Original Message: " + message);
Console.WriteLine("Encrypted Message: " + BitConverter.ToString(encryptedMessage));
Dim message As String = "Hello, this is a test message!"
Dim password As String = "StrongPassword123"
Dim encryptedMessage() As Byte = SimpleEncryption.EncryptData(message, password)
Console.WriteLine("Original Message: " & message)
Console.WriteLine("Encrypted Message: " & BitConverter.ToString(encryptedMessage))
VB   C#

Dieses Beispiel ist recht einfach und dient als Einführung. In realen Anwendungen sollten Sie robustere Praktiken in Betracht ziehen, wie die Speicherung von Salt und IV zusammen mit den verschlüsselten Daten und die Behandlung von Ausnahmen, die während des Verschlüsselungsprozesses ausgelöst werden könnten.

BouncyCastle C#(Wie es für Entwickler funktioniert): Abbildung 2 - Konsolenausgabe

Erweiterte Nutzung und Anpassung

Bouncy Castle ist nicht auf die Grundfunktionen beschränkt. Es lässt sich individuell anpassen und unterstützt fortschrittliche kryptografische Algorithmen.

NTRU Prime und andere fortgeschrittene Algorithmen

Bouncy Castle unterstützt eine Vielzahl von Algorithmen, darunter auch den fortgeschrittenenNTRU-Prime. Dies gibt den Entwicklern die Flexibilität, den am besten geeigneten Algorithmus für ihre spezifischen Bedürfnisse zu wählen.

Best Practices für Ausnahmebehandlung und Sicherheit

Die richtige Behandlung von Ausnahmen ist bei kryptografischen Anwendungen von entscheidender Bedeutung. Die Methoden von Bouncy Castle können Ausnahmen auslösen, und die korrekte Behandlung dieser Ausnahmen gewährleistet robuste und sichere Anwendungen.

Einbindung von IronPDF in die Hüpfburg

BouncyCastle C#(Wie es für Entwickler funktioniert): Abbildung 3 - IronPDF for .NET: Die C# PDF-Bibliothek

IronPDF ergänzt Bouncy Castle durch die Möglichkeit, mit PDF-Dokumenten zu arbeiten, die dann mit den kryptografischen Fähigkeiten von Bouncy Castle gesichert werden können. Im Folgenden erfahren Sie, wie Sie diese beiden leistungsstarken Bibliotheken integrieren können:

Das herausragende Merkmal von IronPDF ist seineFähigkeiten der HTML-zu-PDF-Konvertierung, wobei alle Layouts und Stile beibehalten werden. Es wandelt Webinhalte in PDF-Dateien um, die sich für Berichte, Rechnungen und Dokumentationen eignen. Sie können HTML-Dateien, URLs und HTML-Strings nahtlos in PDFs konvertieren.

Erste Schritte mit IronPDF

Beginnen Sie noch heute mit der Verwendung von IronPDF in Ihrem Projekt mit einer kostenlosen Testversion.

Erster Schritt:
green arrow pointer


using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
VB   C#

Installation mit NuGet-Paketmanager

Gehen Sie folgendermaßen vor, um IronPDF mithilfe des NuGet-Paketmanagers in Ihr Bouncy Castle C#-Projekt zu integrieren:

  1. Öffnen Sie Visual Studio und klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Ihr Projekt.

  2. Wählen Sie "NuGet-Pakete verwalten..." aus dem Kontextmenü.

  3. Gehen Sie auf die Registerkarte Durchsuchen und suchen Sie nach IronPDF.

  4. Wählen Sie die IronPDF-Bibliothek aus den Suchergebnissen aus und klicken Sie auf die Schaltfläche Installieren.

  5. Akzeptieren Sie die Aufforderung zu einer Lizenzvereinbarung.

    Wenn Sie IronPDF über die Paketverwaltungskonsole in Ihr Projekt einbinden möchten, führen Sie den folgenden Befehl in der Paketverwaltungskonsole aus:

Install-Package IronPdf

Es wird IronPDF in Ihr Projekt holen und installieren.

Installation über die NuGet-Website

Einen detaillierten Überblick über IronPDF, einschließlich seiner Funktionen, Kompatibilität und zusätzlicher Download-Optionen, finden Sie auf der IronPDF-Seite auf der NuGet-Website unter https://www.nuget.org/packages/IronPdf.

Installation über DLL

Alternativ können Sie IronPDF auch direkt in Ihr Projekt einbinden, indem Sie die DLL-Datei verwenden. Laden Sie die ZIP-Datei, die die DLL enthält, von dieser Seite herunterIronPDF Direkt herunterladen. Entpacken Sie die Datei, und binden Sie die DLL in Ihr Projekt ein.

Erzeugen einer PDF-Datei mit IronPDF

Erstens, lassen Sie unsErstellen eines einfachen PDF-Dokuments mit IronPDF:

using IronPdf;
public class PdfGenerator
{
    public static void CreateSimplePdf(string filePath, string content)
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(content);
        pdf.SaveAs(filePath);
    }
}
using IronPdf;
public class PdfGenerator
{
    public static void CreateSimplePdf(string filePath, string content)
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(content);
        pdf.SaveAs(filePath);
    }
}
Imports IronPdf
Public Class PdfGenerator
	Public Shared Sub CreateSimplePdf(ByVal filePath As String, ByVal content As String)
		Dim renderer = New ChromePdfRenderer()
		Dim pdf = renderer.RenderHtmlAsPdf(content)
		pdf.SaveAs(filePath)
	End Sub
End Class
VB   C#

In diesem Code verwenden wir die Klasse ChromePdfRenderer von IronPDF, um HTML-Inhalte als PDF zu rendern und in einer Datei zu speichern.

Verschlüsselung der PDF-Datei mit Bouncy Castle

Nach der Erstellung der PDF-Datei können wir sie mit Bouncy Castle verschlüsseln. Hier wird die Methode EncryptData für den Umgang mit PDF-Dateien angepasst:

// ... [Previous Bouncy Castle using statements]
public class PdfEncryption
{
    public static void EncryptPdfFile(string inputFilePath, string outputFilePath, string password)
    {
        // Read the PDF file
        byte[] pdfBytes = File.ReadAllBytes(inputFilePath);
        // Encrypt the PDF bytes
        byte[] encryptedBytes = SimpleEncryption.EncryptData(Encoding.UTF8.GetString(pdfBytes), password);
        // Write the encrypted bytes to a new file
        File.WriteAllBytes(outputFilePath, encryptedBytes);
    }
}
// ... [Previous Bouncy Castle using statements]
public class PdfEncryption
{
    public static void EncryptPdfFile(string inputFilePath, string outputFilePath, string password)
    {
        // Read the PDF file
        byte[] pdfBytes = File.ReadAllBytes(inputFilePath);
        // Encrypt the PDF bytes
        byte[] encryptedBytes = SimpleEncryption.EncryptData(Encoding.UTF8.GetString(pdfBytes), password);
        // Write the encrypted bytes to a new file
        File.WriteAllBytes(outputFilePath, encryptedBytes);
    }
}
' ... [Previous Bouncy Castle using statements]
Public Class PdfEncryption
	Public Shared Sub EncryptPdfFile(ByVal inputFilePath As String, ByVal outputFilePath As String, ByVal password As String)
		' Read the PDF file
		Dim pdfBytes() As Byte = File.ReadAllBytes(inputFilePath)
		' Encrypt the PDF bytes
		Dim encryptedBytes() As Byte = SimpleEncryption.EncryptData(Encoding.UTF8.GetString(pdfBytes), password)
		' Write the encrypted bytes to a new file
		File.WriteAllBytes(outputFilePath, encryptedBytes)
	End Sub
End Class
VB   C#

In dieser Methode lesen wir die PDF-Datei als Bytes, verschlüsseln diese Bytes mit unserer zuvor definierten Klasse SimpleEncryption und schreiben dann die verschlüsselten Bytes in eine neue Datei.

Schlussfolgerung

BouncyCastle C#(Wie es für Entwickler funktioniert): Abbildung 5 - IronPDF-Lizenzinformationen

Zusammenfassend lässt sich sagen, dass die Kombination von Bouncy Castle C# und IronPDF eine Lösung für die Erstellung und Sicherung von PDF-Dokumenten in .NET-Anwendungen darstellt. Bouncy Castle bietet die notwendigen kryptografischen Werkzeuge zur Sicherung von Daten, während IronPDF die einfache Erstellung und Bearbeitung von PDF-Dateien ermöglicht. Diese Integration ist besonders wertvoll in Szenarien, die ein hohes Maß an Dokumentensicherheit und Vertraulichkeit erfordern.

Für diejenigen, die IronPDF kennenlernen möchten, bietet die Bibliothek eine kostenlose Testversion an, mit der Entwickler experimentieren und die Funktionen testen können. Sollten Sie sich entscheiden, IronPDF in Ihre Produktionsumgebung zu integrieren,lizenzierungsinformationen und -optionensind verfügbar.

< PREVIOUS
C#-String-Interpolation (Wie es für Entwickler funktioniert)
NÄCHSTES >
Math.NET C# (Wie es für Entwickler funktioniert)

Sind Sie bereit, loszulegen? Version: 2024.12 gerade veröffentlicht

Gratis NuGet-Download Downloads insgesamt: 11,853,890 Lizenzen anzeigen >