Archive for January, 2008

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);