Поскольку SecureString
использует интерфейс IDispose
. Вы могли бы сделать это так.
SecureString secure = new SecureString();
foreach(var character in data.ToCharArray())
secure.AppendChar(character);
По существу, data
будет параметром.
Если вы используете using
, чтобы помочь облегчить ресурсы; Вы хотите быть осторожными в сфере. Но это может быть выгодной альтернативой, в зависимости от использования.
Обновление:
Вы могли бы сделать полную сигнатуру метода:
public static SecureString ConvertStringToSecureString(this string data)
{
var secure = new SecureString()
foreach(var character in data.ToCharArray())
secure.AppendChar(character);
secure.MakeReadOnly();
return secure;
}
Для расшифровки вы хотели бы сделать:
public static string ConvertSecureStringToString(this SecureString data)
{
var pointer = IntPtr.Zero;
try
{
pointer = Marshal.SecureStringToGlobalAllocUnicode(data);
return Marshal.PtrToStringUni(pointer);
}
finally
{
Marshal.ZeroFreeGlobalAllocUnicode(pointer);
}
}
Следующая статья также предоставит вам дополнительную информацию.