.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 breite Palette von kryptografischen Algorithmen und Tools für .NET-Entwickler bietet. Dieser Leitfaden soll Anfängern die Grundlagen von Bouncy Castle näherbringen, indem er dessen Fähigkeiten als Sicherheitsanbieter hervorhebt und praktische Beispiele für den täglichen Gebrauch bietet. Wir werden auch lernen, wie wir es mit demIronPDFBibliothek.

Einführung in Bouncy Castle

Bouncy Castle zeichnet sich als eine leistungsstarke und vielseitige Bibliothek im Bereich der kryptografischen Sicherheit aus. Es handelt sich um ein registriertes australisches Wohltätigkeitsprojekt, das darauf abzielt, hochwertige Sicherheitsdienste für Java und C# bereitzustellen. Die Bibliothek wird unter einer Lizenz auf Basis der MIT X Consortium License gepflegt, die eine weitverbreitete Nutzung und Beiträge fördert.

Verstehen des Zwecks von Bouncy Castle

Bouncy Castle dient als Sicherheitsanbieter und bietet eine umfangreiche Palette von kryptografischen Algorithmen an. Seine Vielseitigkeit ermöglicht es, verschiedene Sicherheitsanforderungen zu erfüllen, von der grundlegenden Verschlüsselung bis hin zu komplexen digitalen Signaturen. Als Anfänger ist es entscheidend, den Umfang von Bouncy Castle zu verstehen, um es effektiv in Ihren Projekten einzusetzen.

Erste Schritte mit Bouncy Castle in C

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

Einrichtung

Bibliothek herunterladen: Um loszulegen, laden Sie die neueste Version des Bouncy Castle-Pakets von der offiziellen Website. Stellen Sie sicher, dass Sie die richtige Version auswählen, die den Anforderungen Ihres Projekts entspricht.

In Ihr Projekt integrieren: Nach dem Herunterladen integrieren Sie Bouncy Castle in Ihr C#-Projekt. Dies beinhaltet normalerweise das Hinzufügen der Bibliothek als Referenz in den Projekteinstellungen.

Sie können es auch herunterladen und installieren, indem Sie im NuGet Package Manager nach "Bouncycastle" in der Suchleiste suchen.

BouncyCastle C#(Wie es für Entwickler funktioniert): Abbildung 1 - Laden Sie Bouncy Castle herunter und installieren Sie es, indem Sie im NuGet-Paket-Manager nach "Bouncycastle" in der Suchleiste suchen.

Beispiel für grundlegende Verschlü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#

Dieser Codeausschnitt zeigt, wie man eine einfache Verschlüsselungsmethode erstellt. Es ist wichtig, alle möglicherweise auftretenden Ausnahmen zu behandeln, um die Sicherheit Ihrer Implementierung zu gewährleisten. Um diese Methode zu verwenden, rufen Sie EncryptData mit der Nachricht auf, die Sie verschlüsseln möchten, sowie einem Passwort. 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 ziemlich einfach und dient als Einführung. In realen Anwendungen sollten Sie robustere Praktiken in Betracht ziehen, wie das Speichern des Salzes und des Initialisierungsvektors (IV) zusammen mit den verschlüsselten Daten und das Behandeln von Ausnahmen, die während des Verschlüsselungsprozesses auftreten könnten.

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

Erweiterte Nutzung und Anpassung

Bouncy Castle ist nicht auf grundlegende Funktionalitäten beschränkt. Es ermöglicht Anpassungen und unterstützt fortschrittliche kryptographische Algorithmen.

NTRU Prime und andere fortschrittliche Algorithmen

Bouncy Castle unterstützt eine Vielzahl von Algorithmen, einschließlich der fortschrittlichenNTRU Prime. Dies gibt Entwicklern die Flexibilität, den am besten geeigneten Algorithmus für ihre spezifischen Bedürfnisse auszuwählen.

Ausnahmebehandlung und Sicherheitsbewährte Praktiken

Eine ordnungsgemäße Ausnahmebehandlung ist in kryptografischen Anwendungen entscheidend. Die Methoden von Bouncy Castle können Ausnahmen werfen, und die korrekte Handhabung dieser Ausnahmen gewährleistet robuste und sichere Anwendungen.

Integrieren von IronPDF mit Bouncy Castle

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

IronPDFergänzt Bouncy Castle, indem es die Funktionalität bereitstellt, mit PDF-Dokumenten zu arbeiten, die dann mit den kryptographischen Fähigkeiten von Bouncy Castle gesichert werden können. Hier erfahren Sie, wie Sie diese beiden leistungsstarken Bibliotheken integrieren können:

Das herausragende Merkmal von IronPDF ist seineHTML zu PDFFähigkeit, alle Layouts und Stile beizubehalten. Es konvertiert Webinhalte in PDFs, die sich für Berichte, Rechnungen und Dokumentationen eignen. Sie können HTML-Dateien, URLs und HTML-Strings nahtlos in PDFs konvertieren.

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#

IronPDF-Bibliothek installieren

C# NuGet-Bibliothek für PDF

Installieren mit NuGet

Install-Package IronPdf
oder
Java PDF JAR

Herunterladen DLL

DLL herunterladen

Manuelle Installation in Ihr Projekt

C# NuGet-Bibliothek für PDF

Installieren mit NuGet

Install-Package IronPdf
oder
Java PDF JAR

Herunterladen DLL

DLL herunterladen

Manuelle Installation in Ihr Projekt

Fangen Sie noch heute an, IronPDF in Ihrem Projekt mit einer kostenlosen Testversion zu verwenden.

Erster Schritt:
green arrow pointer

Schau dir an IronPDF an Nuget Für schnelle Installation und Bereitstellung. Mit über 8 Millionen Downloads verwandelt es PDF mit C#.

C# NuGet-Bibliothek für PDF nuget.org/packages/IronPdf/
Install-Package IronPdf

Erwägen Sie die Installation der IronPDF DLL direkt. Laden Sie es herunter und installieren Sie es manuell für Ihr Projekt oder die GAC-Form: IronPdf.zip

Manuelle Installation in Ihr Projekt

DLL herunterladen

Mit NuGet-Paket-Manager installieren

Um IronPDF in Ihr BountyCastle C#-Projekt mit dem NuGet-Paketmanager zu integrieren, befolgen Sie diese Schritte:

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

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

  3. Gehe zum "Durchsuchen"-Tab und suche nach IronPDF.

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

  5. Akzeptieren Sie jede Lizenzvereinbarungsaufforderung.

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

Install-Package IronPdf

Es lädt IronPDF herunter und installiert es in Ihr Projekt.

Installation über die NuGet-Website

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

Über DLL installieren

Alternativ können Sie IronPDF direkt in Ihr Projekt integrieren, indem Sie dessen DLL-Datei verwenden. Laden Sie die ZIP-Datei herunter, die die DLL enthält, von diesemLink. Entpacken Sie es und fügen Sie die DLL in Ihr Projekt ein.

Erstellen eines PDFs mit IronPDF

Zuerst, lassen Sie unserstellen Sie ein einfaches PDF-Dokumentusing 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 ChromePdfRenderer-Klasse von IronPDF, um HTML-Inhalte als PDF zu rendern und in einer Datei zu speichern.

Verschlüsseln des PDFs mit Bouncy Castle

Nach der Generierung des PDFs können wir es mit Bouncy Castle verschlüsseln. Hier werden wir die EncryptData-Methode ändern, um PDF-Dateien zu verarbeiten:

// ... [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 in Bytes, verschlüsseln diese Bytes mithilfe unserer zuvor definierten SimpleEncryption-Klasse und schreiben dann die verschlüsselten Bytes in eine neue Datei.

Fazit

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

Abschließend bietet die Kombination aus Bouncy Castle C# und IronPDF eine Lösung zum Erstellen und Sichern von PDF-Dokumenten in .NET-Anwendungen. Bouncy Castle bietet die notwendigen kryptografischen Werkzeuge zur Sicherung von Daten, während IronPDF die einfache Erstellung und Bearbeitung von PDFs ermöglicht. Diese Integration ist besonders wertvoll in Szenarien, die hohe Anforderungen an die Dokumentensicherheit und Vertraulichkeit stellen.

Für diejenigen, die daran interessiert sind, zu erkundenIronPDF, sodass Entwickler seine Funktionen ausprobieren und bewerten können. Sollten Sie sich entscheiden, IronPDF in Ihre Produktionsumgebung zu integrieren, beginnen die Lizenzkosten ab $749.

< 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.10 gerade veröffentlicht

Gratis NuGet-Download Downloads insgesamt: 11,308,499 Lizenzen anzeigen >