C# コンソール アプリの場合、アプリケーション設定でパスワードを保持する必要がありますが、typeSystem.Security.SecureString
の設定を作成すると、設定自体がプレーンテキストの構成ファイルから削除されます。もう生の値を見ることができないので、保存時にデータがまだ暗号化されているかどうかを検証できません。
文字列を単純に暗号化するSecureString
のに最適な方法ですか、それとも使用する必要がありますか?ProtectedData
SecureString
--編集-- aを永続化できることを検証するために使用したテスト コードを次に示します。
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public global::System.Security.SecureString Password
{
get
{
return ((global::System.Security.SecureString)(this["Password"]));
}
set { this["Password"] = value; }
}
static void Main(string[] args)
{
PersistPassword("A-Test-Password");
Console.WriteLine(ReadPassword());
Console.ReadLine();
}
static void PersistPassword(string Password)
{
SecureString ss = new SecureString();
Password.ToCharArray().ToList().ForEach(ss.AppendChar);
Settings.Default.Password = ss;
}
static string ReadPassword()
{
SecureString ss = Settings.Default.Password;
IntPtr ptr = Marshal.SecureStringToCoTaskMemUnicode(ss);
return Marshal.PtrToStringUni(ptr);
}