Dans tous les projets plus ou moins sensibles, il est très souvent demandé de 'crypter' les données qui transitent (par exemple, dans une URL par l'utilisation des QueryString).
Voilà donc un exemple totalement commenté et que j'utilise dans tous mes projets actuels et surtout un exemple d'application l'utilisant.
Dans le développement d'applications, il arrive toujours un moment où il faut échanger des données à l'extérieur de cette application (donc pas d'utilisation de variable de session, ...), on doit donc passer en Mode POST ou GET, qui n'est pas fiable en matière de sécurité des données.
Il est donc toujours très utile de pouvoir 'crypter' un minimum ces données sortantes. Un exemple de la mise en place récente de cette classe a été l'ajout du cryptage simple dans les HttpHandler pour le téléchargement de fichier (Cf. l'article sur les HttpHandler). Ainsi le nom du fichier appelé dans l'URL n'était pas visible de l'utilisateur.
Nous allons donc dans cet article présenter simplement la classe (elle est entièrement commentée) et ensuite modifier le fichier que nous avions dans l'article précédent (les HttpHandler) pour ajouter le cryptage.
Le cryptage
Tout d'abord voyons ce qu'est le cryptage, il s'agit de transformer une donnée d'origine selon une méthode précise (utilisant pour cela une ou plusieurs clés) pour qu'un utilisateur n'ayant pas la clé (ou les clés) qui a (ont) servi à ce cryptage ne puisse pas retrouver la donnée d'origine.
Une présentation plus précise de ce qu'est le cryptage et son évolution jusqu'à nos jours est ici :
La méthode qui va être utilisée dans la classe présentée est celle de la Cryptographie conventionnelle, c'est à dire le cryptage de clé secrète ou de clé symétrique. Ainsi dans cet outil nous définirons une seule et unique clé qui sera utilisée par les deux partie (la partie qui codera, et celle qui décodera).
Ces deux parties peuvent être dans la même application ou non (et l'intérêt est là).