我需要将SecureString
用于Microsoft的类,我在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;
}
}
}
}
唯一的问题是unsafe
关键字一直让我误以为Cannot use unsafe construct in safe context
。
不幸的是我无法找到为什么会发生这种情况......
注意: 上面的代码在LINQPad中运行,但在VS2013中没有(使用resharper)。
答案 0 :(得分:59)
我不确定在这种情况下你是否需要不安全的代码(参见 @mybirthname 的回答)。
但是当需要不安全的代码时,可以在Project属性中启用它。
Project
,然后点击<ProjectName> properties...
Build
页面。Allow unsafe code
。或者可以明确指定/unsafe编译器选项。
答案 1 :(得分:10)
public static SecureString GetSecureString(string password)
{
SecureString secureString = new SecureString();
foreach (char c in password)
{
secureString.AppendChar(c);
}
secureString.MakeReadOnly();
return secureString;
}
如果没有不安全的代码,你可以做同样的事情。