1

コードで使用するCONSTである、安全な変数を作成したいと思います。System.Security.SecureStringの使用を検討しましたが、ユーザーにこのパスワードを知られたくないので、それがチケットである可能性があります。唯一の問題はそれを初期化することです。ほとんどの場合、SecureStringはユーザーのキーを押すことで「設定」するのが最適のようです。これは欲しくない。私が出くわした1つのオプションは次のようになります。

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の値を一定の値に設定し、その値をスクランブルするための良い方法はありますか?

4

1 に答える 1

0

すべてのエントリをchars非常にランダムな値に設定して、動的メモリから値を削除することができます。ただし、文字列は実行可能ファイルに残ります。

于 2009-07-29T22:22:16.890 に答える