Bewise

Nous développons... votre avance

Cryptage d’informations d’un fichier Web.Config en VB.NET

SLF
SWA
19/03/2004 - Frédéric Colin
Télécharger la version Word
Télécharger les sources

1 Introduction

L’objectif de cet article est de fournir un exemple de cryptage des informations sensibles contenues dans le fichier de configuration d’un site Web (appSettings du fichier Web.Config).

L’exemple a été conçu sur la base du Framework 1.1 sur une machine Windows 2003 Server édition standard US.

2 L’exemple par le code

2.1 Architecture de l’exemple

Il s’agit d’un simple site Web avec un formulaire Web « WebForm1 » et une classe « Util » qui se charge du cryptage/décryptage au travers de membres partagés.

clip_image001 Le point de vue de l’arborescence du site :

clip_image003

clip_image001[1] Le point de vue du formulaire Web :

Voici l’interface de l’application qui permet de crypter/décrypter des chaînes de caractères et qui liste les informations cryptées contenues dans la collection « appSettings » du fichier Web.Config.

clip_image005

clip_image001[2] Le point de vue du fichier de configuration

<appSettings> <add key="ConnectionString" value="ezjfn/cJj1wCNiAvVrbvr2i6pgwKZzLHNIJterNIxNeAY964c3KGgjllEhbdCms1fP4iGrfGu+EcBWhjdDHW/Q==" /> <add key="clé 1" value="lu/0UqSuS+pgvaY1XmaNSTdiSzba1h4F" /> <add key="clé 2" value="lu/0UqSuS+pgvaY1XmaNSRwTVUAINPtr" /> </appSettings>

clip_image001[3] Le point de vue des classes

clip_image002

2.2 Codage de l’exemple

Dans cet exemple, je me propose d’utiliser les espaces de nom suivants :

§ Imports System.Security.Cryptography

· Pour l’algorithme de cryptage symétrique TripleDES

§ Imports System.Text

· Pour les transformations String ó Tableau d’octets puisque les algorithmes de cryptage travaillent en tableaux d’octets

§ Imports System.IO

· Pour le MemoryStream

En entrée de cryptage, il faut fournir deux éléments importants :

o Le vecteur d’initialisation utilisé par l’algorithme de cryptage pour le premier bloc d’information à crypter. Sans cet IV (on peut le considérer comme un modèle de cryptage), les données communes entre deux chaînes seraient cryptées suivant le même modèle pour une clé identique. En d’autres termes, avec une même clé mais 2 IV différents, les données sont cryptées avec des valeurs différentes.

o La clé de cryptage utilisée pour Crypter / Décrypter

La classe Util sert à deux niveaux :

o Chargée du cryptage/décryptage à partir d’un IV et d’une clé codées en dur dans la classe

o Chargée de l’encapsulation de la propriété AppSettings de la classe ConfigurationSettings.

Le service de cryptographie TripleDES fourni par la Framework 1.1 admet donc un vecteur d’initialisation d’une taille exacte de 8 caractères et une clé d’une taille exacte de 24 caractères. Pour info, la classe « TripleDESCryptoServiceProvider » fournit deux services permettant respectivement de générer automatiquement un IV (méthode GenerateIV) et une clé (méthode GenerateKey).

Le code de la classe Util est le suivant :

Imports System.Security.Cryptography Imports System.Text Imports System.IO Public Class Util Private Shared iv() As Byte = System.Text.Encoding.UTF8.GetBytes("Az'RTygà") ' 8 caractères Private Shared key() As Byte = System.Text.Encoding.UTF8.GetBytes("CeRtTrdsNjuIOlMlZaSwXdf?") ' 24 caractères Private Shared encryptor As New TripleDESCryptoServiceProvider Public Shared Function Decrypte(ByVal valeur As String) As String Dim transform As ICryptoTransform Dim myStream As MemoryStream Dim cs As CryptoStream Dim data() As Byte transform = encryptor.CreateDecryptor(key, iv) data = Convert.FromBase64String(valeur) myStream = New MemoryStream cs = New CryptoStream(myStream, transform, CryptoStreamMode.Write) cs.Write(data, 0, data.Length) cs.FlushFinalBlock() cs.Close() Return Encoding.UTF8.GetString(myStream.ToArray()) End Function Public Shared Function Crypte(ByVal valeur As String) As String Dim transform As ICryptoTransform Dim myStream As MemoryStream Dim cs As CryptoStream Dim data() As Byte transform = encryptor.CreateEncryptor(key, iv) data = Encoding.UTF8.GetBytes(valeur) myStream = New MemoryStream cs = New CryptoStream(myStream, transform, CryptoStreamMode.Write) cs.Write(data, 0, data.Length) cs.FlushFinalBlock() cs.Close() Return Convert.ToBase64String(myStream.ToArray()) End Function Public Shared ReadOnly Property AppSettings(ByVal key As String) As String Get Dim s As String = ConfigurationSettings.AppSettings(key) Dim valeurRetournee As String = Nothing If Not s Is Nothing AndAlso s.Trim.Length <> 0 Then valeurRetournee = Decrypte(s) Else valeurRetournee = Nothing End If Return valeurRetournee End Get End Property End Class

La propriété AppSettings de la classe Util permet donc de récupérer les informations du fichier de configuration en lieu et place de la propriété AppSettings de la classe ConfigurationSettings du Framework.

3 Conclusion

Pour information, d’autres services de cryptage (symétriques ou asymétriques) sont fournis par le Framework. Pour cela, je vous invite à regarder l’espace de nom « System.Security.Cryptography ».

Bien entendu, dans cet exemple, il resterait à implémenter l’interception d’erreurs lors des phases de cryptage / Décryptage (erreur de type « Bad Data » par exemple si la valeur cryptée a été modifiée). Je laisse libre cour à votre imagination pour inventer le traitement adéquat sur le sujet !

> Tous les articles

Commentaires

aucun commentaire
Page 1/1
   
Connexion
  • Accueil
  • Plan du site
  • Contact
Bewise TV, Blog technique, Webcasts...

Votre carrière et nous

  • Nos offres
  • Votre candidature
Ignorer les liens de navigation > Accueil > Nos Métiers > Solutions Web Avancées > Détail Article
Ignorer les liens de navigation
Nous
Nos Métiers
Vous Former
Nos Evénements
Nos Références
Nos Activités
Nos Certifications
Nos Chiffres
Le Groupe
Nos Partenaires
On Parle de Nous
Votre Carrière et Nous
Nous Contacter
Défiler vers le haut
Défiler vers le bas
Administration, Système et Communication
Architecture, Méthodes, Industrialisation
Décisionnel et Gestion des Données
Nouvelles Interfaces Utilisateurs
Portail et Travail Collaboratif
Solutions Langages et Framework
Solutions Web Avancées
Défiler vers le haut
Défiler vers le bas
Nos cours
Le Planning
Offres promotionnelles
Défiler vers le haut
Défiler vers le bas
TechDays'12
TechLunch
Windows 8 Camp
Défiler vers le haut
Défiler vers le bas
  • Infos légales
  • Lettre du Regional Director
  • Revue de presse