Test in einer Live-Umgebung
Test in der Produktion ohne Wasserzeichen.
Funktioniert überall, wo Sie es brauchen.
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.
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.
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.
Die Implementierung von Bouncy Castle in C# beginnt mit der Einrichtung der Umgebung und dem Verständnis ihrer grundlegenden Komponenten.
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.
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
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))
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.
Bouncy Castle ist nicht auf grundlegende Funktionalitäten beschränkt. Es ermöglicht Anpassungen und unterstützt fortschrittliche kryptographische 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.
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.
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
Install-Package IronPdf
Install-Package IronPdf
Fangen Sie noch heute an, IronPDF in Ihrem Projekt mit einer kostenlosen Testversion zu verwenden.
Schau dir an IronPDF an Nuget Für schnelle Installation und Bereitstellung. Mit über 8 Millionen Downloads verwandelt es PDF mit C#.
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 herunterladenUm IronPDF in Ihr BountyCastle C#-Projekt mit dem NuGet-Paketmanager zu integrieren, befolgen Sie diese Schritte:
Öffnen Sie Visual Studio und klicken Sie im Lösungs-Explorer mit der rechten Maustaste auf Ihr Projekt.
Wählen Sie „NuGet-Pakete verwalten...“ aus dem Kontextmenü.
Gehe zum "Durchsuchen"-Tab und suche nach IronPDF.
Wählen Sie die IronPDF-Bibliothek aus den Suchergebnissen aus und klicken Sie auf die Installationsschaltfläche.
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.
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.
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.
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
In diesem Code verwenden wir die ChromePdfRenderer-Klasse von IronPDF, um HTML-Inhalte als PDF zu rendern und in einer Datei zu speichern.
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
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.
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.
9 .NET API-Produkte für Ihre Bürodokumente