Archive for the ‘C# .Net’ Category

Cryptage en mémoire

Sunday, January 20th, 2008

[Draft article]

Il est possible de crypter les chaînes de caractères en mémoire via l’utilisation de la class System.Security.SecureString

Inclure les namespaces

using System.Runtime.InteropServices;
using System.Security.SecureString;

Créer une sécure string à partir d’une chaine :

SecureString scstr = new SecureString();
foreach(Char c in txt_pass.Text) scstr.AppendChar(c);

Récupérer le contenu de la chaine sécurisée dans une zone mémoire non managée (cela permettra de pouvoir supprimer la valeur aussitôt après utilisation)

IntPtr ptr = Marshal.SecureStringToGlobalAllocUnicode(pass);
string clearpass = Marshal.PtrToStringUni(ptr);

Destruction de l’espace mémoire stockant la chaîne en claire :

Marshal.ZeroFreeGlobalAllocUnicode(ptr);