Desde SecureString
utiliza la interfaz IDispose
. En realidad podrías hacerlo así.
SecureString secure = new SecureString();
foreach(var character in data.ToCharArray())
secure.AppendChar(character);
En esencia, el data
habría un parámetro.
Si utiliza el using
para ayudar a aliviar los recursos; querrás tener cuidado con el alcance. Pero esta puede ser una alternativa beneficiosa, dependiendo del uso.
Actualización:
En realidad se podría hacer un método de firma completa:
public static SecureString ConvertStringToSecureString(this string data)
{
var secure = new SecureString()
foreach(var character in data.ToCharArray())
secure.AppendChar(character);
secure.MakeReadOnly();
return secure;
}
para la desencriptación que se quiere hacer:
public static string ConvertSecureStringToString(this SecureString data)
{
var pointer = IntPtr.Zero;
try
{
pointer = Marshal.SecureStringToGlobalAllocUnicode(data);
return Marshal.PtrToStringUni(pointer);
}
finally
{
Marshal.ZeroFreeGlobalAllocUnicode(pointer);
}
}
La siguiente article le dará algo de información adicional también.
Véase también: http://stackoverflow.com/questions/1800695/c-securestring-question –
No se olvide de hacer su 'SecureString' de solo lectura. – Greg