Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
BouncyCastle C# es una completa biblioteca que proporciona una amplia opción de algoritmos criptográficos y herramientas para desarrolladores .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 a utilizarlo con la función[Biblioteca PDF .NET IronPDF](/.
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.
Descarga la biblioteca: Para empezar, descarga la última versión del paquete Bouncy Castle desde su página oficialSitio web de Bouncy Castle. Asegúrese de seleccionar la versión correcta que se ajuste a las necesidades de su proyecto.
Integre en su proyecto: Después de descargarlo, integra Bouncy Castle en tu proyecto 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, mostraré un escenario de encriptación simple utilizando AES(Estándar de cifrado avanzado) 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 utilizar este método, debe llamar a EncryptData con el mensaje que desea 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 es compatible con varios algoritmos, incluido el avanzadoNTRU 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 a Bouncy Castle proporcionando la funcionalidad necesaria para trabajar con documentos PDF, que pueden protegerse utilizando las capacidades criptográficas de Bouncy Castle. A continuación se explica cómo integrar estas dos potentes bibliotecas:
La característica más destacada de IronPDF es suFunciones 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.
También puede incorporar IronPDF directamente a su proyecto utilizando su archivo DLL. Descargue el archivo ZIP que contiene la DLL desde aquíDescarga directa de IronPDF. Descomprímelo e incluye la DLL en tu proyecto.
En primer lugarCrear un documento PDF simple con 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 el 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, ciframos estos bytes usando nuestra clase SimpleEncryption previamente definida, y luego escribimos los bytes cifrados 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,información sobre licencias y opciones están disponibles.
9 productos API .NET para sus documentos de oficina