Créez un PDF avec BouncyCastle. Voyez les résultats en action !
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);
}
}
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);
}
}
BouncyCastle C# (Comment ça fonctionne pour les développeurs)
Chaknith Bin
janvier 14, 2024
Partager:
BouncyCastle C# est une bibliothèque complète offrant un large éventail d'algorithmes cryptographiques et d'outils pour les 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 [IronPDF .NET PDF Library](/.
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 package Bouncy Castle depuis son site officiel Bouncy Castle. 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.
Exemple de cryptage de base
Dans cet exemple, je vais démontrer un scénario de chiffrement simple en utilisant AES (Advanced Encryption Standard) 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
$vbLabelText $csharpLabel
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))
$vbLabelText $csharpLabel
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.
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 inclut la prise en charge d'une variété d'algorithmes, y compris l'avancé NTRU 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
IronPDF complète Bouncy Castle en fournissant la fonctionnalité de travailler avec des documents PDF, qui peuvent ensuite être sécurisés en utilisant les capacités cryptographiques de Bouncy Castle. Voici comment intégrer ces deux puissantes bibliothèques :
La fonctionnalité remarquable d'IronPDF est ses capabilités de conversion HTML en PDF, 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.
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
$vbLabelText $csharpLabel
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 :
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.
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
Alternativement, vous pouvez intégrer IronPDF directement dans votre projet en utilisant son fichier DLL. Téléchargez le fichier ZIP contenant la DLL depuis ce Téléchargement Direct IronPDF. Décompressez-la et incluez la DLL dans votre projet.
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
$vbLabelText $csharpLabel
Dans ce code, nous utilisons la classe ChromePdfRenderer de 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. Ici, nous allons modifier la méthode EncryptData pour gérer 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
$vbLabelText $csharpLabel
Dans cette méthode, nous lisons le fichier PDF sous forme d'octets, chiffrons ces octets en utilisant notre classe SimpleEncryption précédemment définie, puis écrivons les octets chiffrés dans un nouveau fichier.
Conclusion
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, les informations et options de licence sont disponibles.
Chaknith travaille sur IronXL et IronBarcode. Il possède une expertise approfondie en C# et .NET, aidant à améliorer le logiciel et à soutenir les clients. Ses idées issues des interactions avec les utilisateurs contribuent à de meilleurs produits, une documentation améliorée et une expérience globale enrichie.
< 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)
Des millions d'ingénieurs dans le monde entier lui font confiance
Réservez une démo en direct gratuite
Réservez une démonstration personnelle de 30 minutes.
Pas de contrat, pas de détails de carte, pas d'engagements.
Voici ce à quoi vous pouvez vous attendre :
Une démonstration en direct de notre produit et de ses principales fonctionnalités
Obtenez des recommandations de fonctionnalités spécifiques au projet
Toutes vos questions trouvent réponse pour vous assurer de disposer de toutes les informations dont vous avez besoin. (Aucun engagement de votre part.)
CHOISIR L'HEURE
VOS INFORMATIONS
Réservez votre démo en direct gratuite
Fiable par plus de 2 millions d'ingénieurs dans le monde entier