AIDE .NET

BouncyCastle C# (Comment ça fonctionne pour les développeurs)

Publié janvier 14, 2024
Partager:

Château gonflable C# est une bibliothèque complète offrant un large choix d'algorithmes et d'outils cryptographiques aux développeurs .NET. Ce guide vise à présenter aux débutants les bases de Bouncy Castle, en soulignant ses capacités en tant que fournisseur de sécurité et en proposant des exemples pratiques pour une utilisation quotidienne. Nous apprendrons également comment l'utiliser avec la fonction[IronPDF for .NET Bibliothèque PDF](/.

Introduction au château gonflable

Bouncy Castle est une bibliothèque puissante et polyvalente dans le domaine de la sécurité cryptographique. Il s'agit d'un projet caritatif australien enregistré visant à fournir des services de sécurité de haute qualité pour Java et C#. La bibliothèque est maintenue sous une licence basée sur la MIT X Consortium License, qui encourage l'utilisation généralisée et la contribution.

Comprendre l'objectif du château gonflable

Bouncy Castle sert de fournisseur de sécurité, offrant une vaste gamme d'algorithmes cryptographiques. Sa polyvalence lui permet de répondre à différents besoins en matière de sécurité, du cryptage de base aux signatures numériques complexes. En tant que débutant, il est essentiel de comprendre le champ d'application de Bouncy Castle pour le mettre en œuvre efficacement dans vos projets.

Démarrer avec un château gonflable en C# ;

La mise en œuvre de Bouncy Castle en C# commence par la mise en place de l'environnement et la compréhension de ses composants de base.

Mise en place

Télécharger la bibliothèque : Pour commencer, téléchargez la dernière version du paquetage Bouncy Castle à partir de son site officielSite web du château gonflable. Veillez à sélectionner la version qui correspond aux besoins de votre projet.

Intégrer dans votre projet : Après le téléchargement, intégrez Bouncy Castle dans votre projet C#. Cela implique généralement d'ajouter la bibliothèque en tant que référence dans les paramètres de votre projet.

Vous pouvez également le télécharger et l'installer à l'aide de NuGet Package Manager en recherchant "Bouncycastle" dans la barre de recherche de NuGet Package Manager.

Château gonflable C#(Comment ça marche pour le développeur) : Figure 1 - Téléchargez et installez Bouncy Castle à l'aide du NuGet Package Manager en recherchant "Bouncycastle" ; dans la barre de recherche du NuGet Package Manager

Exemple de cryptage de base

Dans cet exemple, je vais présenter un scénario de cryptage simple utilisant AES(Norme de chiffrement avancée) avec Bouncy Castle en 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#

Cet extrait de code montre comment créer une méthode de cryptage de base. Il est essentiel de gérer les exceptions qui pourraient être levées pour garantir la sécurité de votre mise en œuvre. Pour utiliser cette méthode, vous devez appeler EncryptData avec le message que vous souhaitez crypter et un mot de passe. Par exemple :

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#

Cet exemple est assez basique et sert d'introduction. Dans les applications réelles, vous devez envisager des pratiques plus robustes, comme le stockage du sel et de l'IV avec les données cryptées et la gestion des exceptions qui peuvent être générées au cours du processus de cryptage.

Château gonflable C#(Comment ça marche pour le développeur) : Figure 2 - Sortie de la console

Utilisation avancée et personnalisation

Le château gonflable ne se limite pas aux fonctionnalités de base. Il permet la personnalisation et prend en charge des algorithmes cryptographiques avancés.

NTRU Prime et autres algorithmes avancés

Bouncy Castle prend en charge une variété d'algorithmes, y compris les algorithmes avancés suivantsNTRU Prime. Les développeurs ont ainsi la possibilité de choisir l'algorithme le mieux adapté à leurs besoins spécifiques.

Gestion des exceptions et meilleures pratiques en matière de sécurité

Une bonne gestion des exceptions est cruciale dans les applications cryptographiques. Les méthodes de Bouncy Castle peuvent générer des exceptions, et leur traitement correct garantit des applications robustes et sûres.

Incorporation d'IronPDF au château gonflable

Château gonflable C#(Comment ça marche pour le développeur) : Figure 3 - IronPDF for .NET : La bibliothèque PDF C#

IronPDF complète Bouncy Castle en offrant la possibilité de travailler avec des documents PDF, qui peuvent ensuite être sécurisés à l'aide des capacités cryptographiques de Bouncy Castle. Voici comment intégrer ces deux puissantes bibliothèques :

La caractéristique principale d'IronPDF est sonCapacités de conversion de HTML en PDF, en préservant toutes les mises en page et styles. Il convertit le contenu web en PDF, ce qui convient pour les rapports, les factures et la documentation. Vous pouvez convertir des fichiers HTML, des URL et des chaînes HTML en PDF de manière transparente.

Commencez avec IronPDF

Commencez à utiliser IronPDF dans votre projet dès aujourd'hui avec un essai gratuit.

Première étape :
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 à l'aide du gestionnaire de paquets NuGet

Pour intégrer IronPDF à votre projet C# à l'aide du gestionnaire de packages NuGet, procédez comme suit :

  1. Ouvrez Visual Studio et dans l'explorateur de solutions, faites un clic droit sur votre projet.

  2. Choisissez "Gérer les paquets NuGet..." dans le menu contextuel.

  3. Allez dans l'onglet Parcourir et recherchez IronPDF.

  4. Sélectionnez la bibliothèque IronPDF dans les résultats de la recherche et cliquez sur le bouton d'installation.

  5. Accepter tout accord de licence.

    Si vous souhaitez inclure IronPDF dans votre projet via la console du gestionnaire de paquets, exécutez alors la commande suivante dans la console du gestionnaire de paquets :

Install-Package IronPdf

Il récupérera et installera IronPDF dans votre projet.

Installation à l'aide du site NuGet

Pour une présentation détaillée d'IronPDF, notamment de ses caractéristiques, de sa compatibilité et des options de téléchargement supplémentaires, visitez la page IronPDF sur le site Web de NuGet à l'adresse https://www.nuget.org/packages/IronPdf.

Installation par DLL

Vous pouvez également incorporer IronPDF directement dans votre projet à l'aide de son fichier DLL. Téléchargez le fichier ZIP contenant la DLL à partir de ce lienIronPDF Téléchargement direct. Décompressez-la et incluez la DLL dans votre projet.

Générer un PDF avec IronPDF

Tout d'abord, nous allonsCréer un document PDF simple à l'aide d'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#

Dans ce code, nous utilisons la classe ChromePdfRenderer d'IronPDF pour rendre le contenu HTML sous forme de PDF et l'enregistrer dans un fichier.

Cryptage du PDF avec Bouncy Castle

Après avoir généré le PDF, nous pouvons le crypter à l'aide de Bouncy Castle. Nous allons ici modifier la méthode EncryptData pour traiter les fichiers PDF :

// ... [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#

Dans cette méthode, nous lisons le fichier PDF sous forme d'octets, nous chiffrons ces octets à l'aide de la classe SimpleEncryption définie précédemment, puis nous écrivons les octets chiffrés dans un nouveau fichier.

Conclusion

Château gonflable C#(Comment ça marche pour le développeur) : Figure 5 - Informations sur la licence IronPDF

En conclusion, la combinaison de Bouncy Castle C# et d'IronPDF offre une solution pour la création et la sécurisation de documents PDF dans les applications .NET. Bouncy Castle fournit les outils cryptographiques nécessaires à la sécurisation des données, tandis qu'IronPDF apporte la facilité de création et de manipulation des PDF. Cette intégration est particulièrement précieuse dans les scénarios exigeant des niveaux élevés de sécurité et de confidentialité des documents.

Pour ceux qui souhaitent découvrir IronPDF, la bibliothèque propose une version d'essai gratuite, permettant aux développeurs d'expérimenter et d'évaluer ses fonctionnalités. Si vous décidez d'intégrer IronPdf dans votre environnement de production,informations sur les licences et optionssont disponibles.

< PRÉCÉDENT
Interpolation de chaîne en C# (Comment cela fonctionne pour les développeurs)
SUIVANT >
Math.NET C# (Comment cela fonctionne pour les développeurs)