J'ai besoin d'utiliser SecureString
pour une classe Microsoft et j'ai trouvé le code suivant sur Internet :
public static class SecureStringExt
{
public static SecureString ConvertToSecureString(this string password)
{
if (password == null)
throw new ArgumentNullException("password");
unsafe //Red highlighted line
{
fixed (char* passwordChars = password)
{
var securePassword = new SecureString(passwordChars, password.Length);
securePassword.MakeReadOnly();
return securePassword;
}
}
}
}
Le seul problème est que le mot clé unsafe
continue de me renvoyer une erreur en disant Cannot use unsafe construct in safe context
. Malheureusement, je n'ai pas trouvé pourquoi cela se produit ...
Remarque: Le code ci-dessus s'exécute dans LINQPad mais pas dans VS2013 (avec resharper).
Je ne sais pas si vous avez besoin d'un code dangereux dans ce cas (voir la réponse de @ mybirthname ).
Mais lorsqu'un code non sécurisé est nécessaire, il peut être activé dans les propriétés du projet.
Project
puis sur <ProjectName> properties...
Build
.Allow unsafe code
.Ou on peut spécifier explicitement l'option de compilation / unsafe .
public static SecureString GetSecureString(string password)
{
SecureString secureString = new SecureString();
foreach (char c in password)
{
secureString.AppendChar(c);
}
secureString.MakeReadOnly();
return secureString;
}
Vous pouvez faire la même chose sans code dangereux.