SecureString
いまいち使いどころがわからないSecureString
メモリ上にずっとパスワードを保持しないといけない場合に使うのだろうか。
でもstringに変換しないと使えない(他のIFへパスワードを渡す)場合は意味あるの?
とりあえず使い終わったstringには空文字でも入れておけばいいのか??
よくわからん。
とりあえずセキュリティー考えてますとかアピールくらいの材料にはなるかも
専門家とかに突っ込まれるとめんどくさいけど。
SecureStringからString
static string SecureStringToString( SecureString secureString ) { var pointer = IntPtr.Zero; try { var buffer = new char[secureString.Length]; pointer = Marshal.SecureStringToCoTaskMemUnicode( secureString ); Marshal.Copy( pointer, buffer, 0, buffer.Length ); return new string( buffer ); } finally { if ( pointer != IntPtr.Zero ) { Marshal.ZeroFreeCoTaskMemUnicode( pointer ); } } }
stringからSecureString
static SecureString StringToSecureString( string source ) { var secureString = new SecureString(); Array.ForEach( source.ToArray(), c => secureString.AppendChar( c ) ); return secureString; }