2009-07-29 20 views
0

私のコードで使用するCONSTという変数を安全なものにしたいと思います。私はSystem.Security.SecureStringを使用して調べましたが、ユーザーがこのパスワードを見つけられないようにするために、チケットになる可能性があります。唯一の問題はそれを初期化することです。ほとんどの場合、SecureStringはユーザーのキー押下によって最適に設定されているようです。私はこれを望んでいない。私はaccross来て1つのオプションは、次のようになります。ReadStringのためにSecureStringを初期化する方法

唯一の問題は、char配列「T」、「E」、「S」、「T」をおそらくまだコンパイル後にメモリに一緒にパックされている

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); 
    } 
。コンパイル時にSecureStringの値を一定の値に設定し、その値をスクランブルさせるのに良い方法はありますか?

+1

あなたは何を達成しようとしていますか?あなたはいくつかの機能を隠すために「秘密の」パスワードを保存したいのですか?コードが流出/発見された瞬間、あなたは「セキュリティ」がなくなってしまった!より優れた解決策は、あなたのアプリを持つことです。電話のホーム。 –

+0

(ソース)コードを流出させる必要はなく、実行ファイルの配布だけで十分です。デコンパイルでは十分であるかもしれないし、デバッガで実行しているかもしれない。あなたが信頼できない人に送る秘密はもはや秘密ではありません。 – Kitsune

+0

これの根本は、x509certificate2をファイルに書き出し、パスワードで保護しなければならないということです。私は同じパスワードを使ってそれを読み返します。 – Nick

答えて

0

charsのすべてのエントリを強くランダムな値に設定して、ダイナミックメモリから値を削除することができます。しかし、実行可能ファイルには文字列が残っています。

関連する問題