我想创建一个变量,一个安全变量,或多或少是我的代码中使用的CONST。我已经研究过使用System.Security.SecureString,看起来它可能是票证,因为我不希望用户找到这个密码。唯一的问题是初始化它。在大多数情况下,看起来SecureString最好由用户按键“设置”。我不想要这个。我遇到的一个选择看起来像这样:
unsafe public static void Main()
{
SecureString testString;
// Define the string value to assign to a new secure string.
char[] chars = { 't', 'e', 's', 't' };
// Instantiate a new secure string.
fixed(char* pChars = chars)
{
testString = new SecureString(pChars, chars.Length);
}
// Display secure string length.
Console.WriteLine("The length of the string is {0} characters.",
testString.Length);
}
唯一的问题是,char数组't','e','s','t'在编译后可能仍然在内存中打包在一起。有没有什么好的方法可以在编译时将SecureString的值设置为常量值并将该值加扰?
答案 0 :(得分:0)
您可以将chars
中的每个条目设置为某个强随机值,以从动态内存中删除该值。但是,字符串仍将存在于可执行文件中。