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 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](/.
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.
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.
Die Implementierung von Bouncy Castle in C# beginnt mit dem Einrichten der Umgebung und dem Verständnis ihrer grundlegenden Komponenten.
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.
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
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))
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.
Bouncy Castle ist nicht auf die Grundfunktionen beschränkt. Es lässt sich individuell anpassen und unterstützt fortschrittliche kryptografische 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.
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.
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.
Beginnen Sie noch heute mit der Verwendung von IronPDF in Ihrem Projekt mit einer kostenlosen Testversion.
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
Gehen Sie folgendermaßen vor, um IronPDF mithilfe des NuGet-Paketmanagers in Ihr Bouncy Castle C#-Projekt zu integrieren:
Öffnen Sie Visual Studio und klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Ihr Projekt.
Wählen Sie "NuGet-Pakete verwalten..." aus dem Kontextmenü.
Gehen Sie auf die Registerkarte Durchsuchen und suchen Sie nach IronPDF.
Wählen Sie die IronPDF-Bibliothek aus den Suchergebnissen aus und klicken Sie auf die Schaltfläche Installieren.
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.
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.
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.
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
In diesem Code verwenden wir die Klasse ChromePdfRenderer von IronPDF, um HTML-Inhalte als PDF zu rendern und in einer Datei zu speichern.
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
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.
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.
9 .NET API-Produkte für Ihre Bürodokumente