Pruebe en producción sin marcas de agua.
Funciona donde lo necesite.
Obtén 30 días de producto totalmente funcional.
Ténlo en funcionamiento en minutos.
Acceso completo a nuestro equipo de asistencia técnica durante la prueba del producto
BouncyCastle C# es una biblioteca completa que ofrece una amplia gama de algoritmos y herramientas criptográficas para desarrolladores de .NET. Esta guía pretende introducir a los principiantes en los fundamentos de Bouncy Castle, destacando sus capacidades como proveedor de seguridad y ofreciendo ejemplos prácticos de uso cotidiano. También aprenderemos cómo podemos usarlo con la [Biblioteca PDF IronPDF .NET](/.
Bouncy Castle destaca como una biblioteca potente y versátil en el ámbito de la seguridad criptográfica. Se trata de un proyecto benéfico australiano registrado cuyo objetivo es ofrecer servicios de seguridad de alta calidad para Java y C#. La biblioteca se mantiene bajo una licencia basada en la Licencia MIT X Consortium, que fomenta el uso generalizado y la contribución.
Bouncy Castle actúa como proveedor de seguridad, ofreciendo una amplia gama de algoritmos criptográficos. Su versatilidad le permite satisfacer diversas necesidades de seguridad, desde el cifrado básico hasta la firma digital compleja. Como principiante, entender el alcance de Bouncy Castle es clave para implementarlo eficazmente en tus proyectos.
La implementación de Bouncy Castle en C# comienza con la configuración del entorno y la comprensión de sus componentes básicos.
Descargar la Biblioteca: Para comenzar, descargue la versión más reciente del paquete de Bouncy Castle desde su sitio web oficial de Bouncy Castle. Asegúrese de seleccionar la versión correcta que se ajuste a las necesidades de su proyecto.
Integrar en su proyecto: Después de descargar, integre Bouncy Castle en su proyecto de C#. Esto suele implicar añadir la biblioteca como referencia en la configuración del proyecto.
También puedes descargarlo e instalarlo utilizando NuGet Package Manager buscando "Bouncycastle" en la barra de búsqueda de NuGet Package Manager.
En este ejemplo, demostraré un escenario simple de cifrado utilizando AES (Advanced Encryption Standard) con 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
Este fragmento de código muestra cómo crear un método de cifrado básico. Es esencial manejar cualquier excepción que pueda ser lanzada para garantizar la seguridad de su implementación. Para usar este método, deberías llamar a EncryptData con el mensaje que deseas cifrar y una contraseña. Por ejemplo:
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))
Este ejemplo es bastante básico y sirve de introducción. En aplicaciones del mundo real, deberías considerar prácticas más robustas, como almacenar la sal y el IV junto con los datos encriptados y manejar las excepciones que puedan lanzarse durante el proceso de encriptación.
El castillo hinchable no se limita a las funciones básicas. Permite la personalización y admite algoritmos criptográficos avanzados.
Bouncy Castle incluye soporte para una variedad de algoritmos, incluyendo el avanzado NTRU Prime. Esto da a los desarrolladores la flexibilidad de elegir el algoritmo más adecuado para sus necesidades específicas.
Un manejo adecuado de las excepciones es crucial en las aplicaciones criptográficas. Los métodos de Bouncy Castle pueden lanzar excepciones, y manejarlas correctamente garantiza aplicaciones robustas y seguras.
IronPDF complementa Bouncy Castle al proporcionar la funcionalidad para trabajar con documentos PDF, que luego pueden ser asegurados utilizando las capacidades criptográficas de Bouncy Castle. A continuación se explica cómo integrar estas dos potentes bibliotecas:
La característica destacada de IronPDF es su capacidad de conversión de HTML a PDF, preservando todos los diseños y estilos. Convierte contenidos web en PDF, adecuados para informes, facturas y documentación. Puede convertir archivos HTML, URL y cadenas HTML en PDF sin problemas.
Comience a usar IronPDF en su proyecto hoy con una prueba gratuita.
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
Para integrar IronPDF en su proyecto Bouncy Castle C# mediante el gestor de paquetes NuGet, siga estos pasos:
Abra Visual Studio y, en el explorador de soluciones, haga clic con el botón derecho del ratón en su proyecto.
Seleccione "Gestionar paquetes NuGet..." en el menú contextual.
Vaya a la pestaña Examinar y busque IronPDF.
Seleccione la biblioteca IronPDF en los resultados de la búsqueda y haga clic en el botón Instalar.
Acepte cualquier solicitud de acuerdo de licencia.
Si desea incluir IronPDF en su proyecto a través de Package Manager Console, ejecute el siguiente comando en Package Manager Console:
Install-Package IronPdf
Buscará e instalará IronPDF en su proyecto.
Para obtener una descripción detallada de IronPDF, incluidas sus características, compatibilidad y opciones de descarga adicionales, visite la página de IronPDF en el sitio web de NuGet en https://www.nuget.org/packages/IronPdf.
Alternativamente, puede incorporar IronPDF directamente en su proyecto utilizando su archivo DLL. Descargue el archivo ZIP que contiene la DLL desde esta Descarga Directa de IronPDF. Descomprímelo e incluye la DLL en tu proyecto.
Primero, vamos a Crear un Documento PDF Simple usando 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
En este código, utilizamos la clase ChromePdfRenderer de IronPDF para renderizar contenido HTML como un PDF y guardarlo en un archivo.
Después de generar el PDF, podemos cifrarlo utilizando Bouncy Castle. Aquí, modificaremos el método EncryptData para manejar archivos 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
En este método, leemos el archivo PDF como bytes, encriptamos estos bytes usando nuestra clase SimpleEncryption previamente definida, y luego escribimos los bytes encriptados en un nuevo archivo.
En conclusión, la combinación de Bouncy Castle C# e IronPDF ofrece una solución para crear y proteger documentos PDF en aplicaciones .NET. Bouncy Castle proporciona las herramientas criptográficas necesarias para proteger los datos, mientras que IronPDF aporta la facilidad de creación y manipulación de PDF. Esta integración es especialmente valiosa en situaciones que requieren altos niveles de seguridad y confidencialidad de los documentos.
Para aquellos interesados en explorar IronPDF, la biblioteca ofrece una versión de prueba gratuita, que permite a los desarrolladores experimentar y evaluar sus características. Si decide integrar IronPDF en su entorno de producción, la información y opciones de licencia están disponibles.