Passer au contenu du pied de page
.NET AIDE

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

BouncyCastle C# est une bibliothèque complète fournissant une vaste gamme d'algorithmes cryptographiques et d'outils pour les développeurs .NET. Ce guide vise à initier les débutants aux bases de Bouncy Castle, en soulignant ses capacités en tant que fournisseur de sécurité et en offrant des exemples pratiques pour une utilisation quotidienne. Nous apprendrons également comment nous pouvons l'utiliser avec la IronPDF .NET PDF Library.

Introduction à Bouncy Castle

Bouncy Castle se distingue comme une bibliothèque puissante et polyvalente dans le domaine de la sécurité cryptographique. C'est un projet de bienfaisance 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 son utilisation et sa contribution répandue.

Comprendre l'objectif de Bouncy Castle

Bouncy Castle sert de fournisseur de sécurité, offrant une vaste gamme d'algorithmes cryptographiques. Sa polyvalence lui permet de répondre à divers besoins de sécurité, depuis le chiffrement basique jusqu'aux signatures numériques complexes. En tant que débutant, comprendre l'étendue de Bouncy Castle est essentiel pour l'implémenter efficacement dans vos projets.

Commencer avec Bouncy Castle en C

Implémenter Bouncy Castle en C# commence par configurer l'environnement et comprendre ses composants de base.

Configuration

Télécharger la bibliothèque : Pour commencer, téléchargez la dernière version du paquet Bouncy Castle depuis son site officiel Bouncy Castle. Assurez-vous de sélectionner la bonne version qui correspond aux besoins de votre projet.

Intégrer dans votre projet : Après avoir téléchargé, 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 la télécharger et l'installer en utilisant le gestionnaire de packages NuGet en cherchant "Bouncycastle" dans la barre de recherche du gestionnaire de packages NuGet.

BouncyCastle C# (Comment ça fonctionne pour le développeur) : Figure 1 - Télécharger et installer Bouncy Castle en utilisant le gestionnaire de packages NuGet en cherchant Bouncycastle dans la barre de recherche du gestionnaire de packages NuGet

Exemple de chiffrement basique

Dans cet exemple, je vais démontrer un scénario de chiffrement simple 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
{
    /// <summary>
    /// Encrypts data using AES encryption with a given password.
    /// </summary>
    /// <param name="message">The message to encrypt.</param>
    /// <param name="password">The password for key derivation.</param>
    /// <returns>The encrypted message as a byte array.</returns>
    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
{
    /// <summary>
    /// Encrypts data using AES encryption with a given password.
    /// </summary>
    /// <param name="message">The message to encrypt.</param>
    /// <param name="password">The password for key derivation.</param>
    /// <returns>The encrypted message as a byte array.</returns>
    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
	''' <summary>
	''' Encrypts data using AES encryption with a given password.
	''' </summary>
	''' <param name="message">The message to encrypt.</param>
	''' <param name="password">The password for key derivation.</param>
	''' <returns>The encrypted message as a byte array.</returns>
	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 chiffrement basique en utilisant les bibliothèques cryptographiques de Bouncy Castle en C#. Pour utiliser cette méthode, vous devez appeler EncryptData avec le message que vous souhaitez chiffrer 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 du monde réel, vous devriez envisager des pratiques plus robustes, comme stocker le sel et le IV aux côtés des données chiffrées et gérer les exceptions qui pourraient être lancées lors du processus de chiffrement.

BouncyCastle C# (Comment ça fonctionne pour le développeur) : Figure 2 - Sortie de console

Utilisation avancée et personnalisation

Bouncy Castle n'est pas limité 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 le NTRU Prime avancé. Cela donne aux développeurs la flexibilité de choisir l'algorithme le plus adapté à leurs besoins spécifiques.

Gestion des exceptions et meilleures pratiques de sécurité

Une gestion appropriée des exceptions est cruciale dans les applications cryptographiques. Les méthodes de Bouncy Castle peuvent lever des exceptions, et les gérer correctement garantit des applications robustes et sécurisées.

Incorporer IronPDF avec Bouncy Castle

BouncyCastle C# (Comment ça fonctionne pour le développeur) : Figure 3 - IronPDF for .NET: The C# PDF Library

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 vous pouvez intégrer ces deux bibliothèques puissantes :

La fonctionnalité exceptionnelle d'IronPDF est sa capacité de conversion HTML en PDF, préservant toutes les mises en page et les styles. Elle convertit le contenu web en PDFs, adaptés pour les rapports, factures, et documents. Vous pouvez convertir des fichiers HTML, des URL, et des chaînes HTML en PDFs facilement.

Commencer avec IronPDF

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

Installer en utilisant le Gestionnaire de Packages NuGet

Pour intégrer IronPDF dans votre projet Bouncy Castle C# en utilisant le gestionnaire de packages NuGet, suivez ces étapes :

  1. Ouvrez Visual Studio et dans l'explorateur de solutions, faites un clic droit sur votre projet.
  2. Choisissez "Gérer les packages NuGet..." dans le menu contextuel.
  3. Allez à l'onglet de navigation et recherchez IronPDF.
  4. Sélectionnez la bibliothèque IronPDF dans les résultats de recherche et cliquez sur le bouton d'installation.
  5. Acceptez tout accord de licence s'il y en a.

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

Install-Package IronPdf

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

Installer en utilisant le site NuGet

Pour une vue d'ensemble détaillée d'IronPDF, y compris ses fonctionnalités, compatibilités, et autres options de téléchargement, visitez la page IronPDF sur le site NuGet à https://www.nuget.org/packages/IronPdf.

Installer via DLL

Alternativement, vous pouvez incorporer IronPDF directement dans votre projet en utilisant son fichier DLL. Téléchargez le fichier ZIP contenant le DLL de ce téléchargement direct IronPDF. Décompressez-le, et incluez le DLL dans votre projet.

Générer un PDF avec IronPDF

Pour commencer, Créez un document PDF simple en utilisant IronPDF :

using IronPdf;

public class PdfGenerator
{
    /// <summary>
    /// Creates a simple PDF from HTML content.
    /// </summary>
    /// <param name="filePath">The file path to save the PDF.</param>
    /// <param name="content">The HTML content to render as PDF.</param>
    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
{
    /// <summary>
    /// Creates a simple PDF from HTML content.
    /// </summary>
    /// <param name="filePath">The file path to save the PDF.</param>
    /// <param name="content">The HTML content to render as PDF.</param>
    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
	''' <summary>
	''' Creates a simple PDF from HTML content.
	''' </summary>
	''' <param name="filePath">The file path to save the PDF.</param>
	''' <param name="content">The HTML content to render as PDF.</param>
	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 d'IronPDF pour rendre le contenu HTML sous forme de PDF et l'enregistrer dans un fichier.

Chiffrer le PDF avec Bouncy Castle

Après avoir généré le PDF, nous pouvons le chiffrer en utilisant Bouncy Castle. Ici, nous allons modifier la méthode EncryptData pour traiter les fichiers PDF :

using System.IO;
using System.Text;

// ... [Previous Bouncy Castle using statements]

public class PdfEncryption
{
    /// <summary>
    /// Encrypts a PDF file using AES encryption.
    /// </summary>
    /// <param name="inputFilePath">The path to the input PDF file.</param>
    /// <param name="outputFilePath">The path to save the encrypted PDF file.</param>
    /// <param name="password">The password used for encryption.</param>
    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);
    }
}
using System.IO;
using System.Text;

// ... [Previous Bouncy Castle using statements]

public class PdfEncryption
{
    /// <summary>
    /// Encrypts a PDF file using AES encryption.
    /// </summary>
    /// <param name="inputFilePath">The path to the input PDF file.</param>
    /// <param name="outputFilePath">The path to save the encrypted PDF file.</param>
    /// <param name="password">The password used for encryption.</param>
    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);
    }
}
Imports System.IO
Imports System.Text

' ... [Previous Bouncy Castle using statements]

Public Class PdfEncryption
	''' <summary>
	''' Encrypts a PDF file using AES encryption.
	''' </summary>
	''' <param name="inputFilePath">The path to the input PDF file.</param>
	''' <param name="outputFilePath">The path to save the encrypted PDF file.</param>
	''' <param name="password">The password used for encryption.</param>
	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

BouncyCastle C# (Comment ça fonctionne pour le développeur) : Figure 5 - IronPDF informations de licence

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

Pour ceux qui souhaitent explorer IronPDF, la bibliothèque offre 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, des informations et options de licence sont disponibles.

Questions Fréquemment Posées

Comment puis-je implémenter la cryptographie dans les applications .NET en utilisant BouncyCastle ?

Pour implémenter la cryptographie dans les applications .NET, vous pouvez utiliser la bibliothèque BouncyCastle, qui fournit une large gamme d'algorithmes cryptographiques. Vous pouvez la télécharger depuis son site officiel ou via le gestionnaire de packages NuGet, puis l'ajouter en tant que référence dans votre projet.

Quel est le processus pour convertir HTML en PDF en C# ?

Vous pouvez convertir HTML en PDF en C# en utilisant IronPDF en utilisant des méthodes comme RenderHtmlAsPdf pour des chaînes HTML ou RenderHtmlFileAsPdf pour des fichiers HTML afin de générer des documents PDF.

Puis-je sécuriser un PDF généré dans des applications .NET ?

Oui, vous pouvez sécuriser un PDF généré dans des applications .NET. Après avoir créé un PDF avec IronPDF, vous pouvez utiliser BouncyCastle pour le crypter en convertissant le PDF en tableau d'octets, en appliquant des algorithmes de cryptage comme AES, et en enregistrant les données cryptées dans un nouveau fichier.

Comment puis-je intégrer BouncyCastle avec une bibliothèque PDF dans un projet C# ?

Pour intégrer BouncyCastle avec une bibliothèque PDF comme IronPDF dans un projet C#, vous pouvez installer les deux bibliothèques en utilisant le gestionnaire de packages NuGet. Utilisez IronPDF pour créer des PDFs et BouncyCastle pour ajouter des fonctionnalités de sécurité cryptographique à ces documents.

Quelles sont les étapes de base pour commencer avec BouncyCastle en C# ?

Commencez par télécharger la bibliothèque BouncyCastle via le gestionnaire de packages NuGet, puis ajoutez-la en tant que référence dans votre projet C#. Vous pouvez commencer à utiliser ses algorithmes cryptographiques pour divers objectifs comme le cryptage, le décryptage et les signatures numériques.

Existe-t-il un moyen de tester les fonctionnalités de la bibliothèque PDF avant de l'acheter ?

Oui, IronPDF offre une version d'essai gratuite que les développeurs peuvent utiliser pour explorer et évaluer ses fonctionnalités, comme la conversion HTML en PDF, avant de prendre une décision d'achat de licence.

Quels algorithmes cryptographiques avancés BouncyCastle prend-il en charge ?

BouncyCastle prend en charge une gamme d'algorithmes cryptographiques avancés, y compris des algorithmes de pointe comme NTRU Prime, offrant flexibilité et sécurité pour les développeurs choisissant des algorithmes adaptés à leurs applications.

Comment puis-je m'assurer que mes opérations cryptographiques sont sûres en C# ?

Assurez-vous que les opérations cryptographiques sont sûres en suivant les meilleures pratiques comme le stockage sécurisé des clés cryptographiques, la gestion correcte des exceptions et l'exécution des opérations dans un environnement sécurisé pour éviter les accès non autorisés.

Puis-je gérer des documents PDF dans des applications .NET ?

Oui, vous pouvez gérer des documents PDF dans des applications .NET en utilisant IronPDF. Cela vous permet de créer, éditer et convertir HTML en PDF, améliorant ainsi les capacités de gestion des documents.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite