Test dans un environnement réel
Test en production sans filigrane.
Fonctionne partout où vous en avez besoin.
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](/.
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.
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.
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.
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.
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
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))
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.
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.
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.
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.
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 à utiliser IronPDF dans votre projet dès aujourd'hui avec un essai gratuit.
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
Pour intégrer IronPDF à votre projet C# à l'aide du gestionnaire de packages NuGet, procédez comme suit :
Ouvrez Visual Studio et dans l'explorateur de solutions, faites un clic droit sur votre projet.
Choisissez "Gérer les paquets NuGet..." dans le menu contextuel.
Allez dans l'onglet Parcourir et recherchez IronPDF.
Sélectionnez la bibliothèque IronPDF dans les résultats de la recherche et cliquez sur le bouton d'installation.
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.
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.
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.
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
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.
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
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.
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.
9 produits de l'API .NET pour vos documents de bureau