プロジェクトに SecureString を実装しています。それを読んで、基本的に同じことをしている多くの例を見た後、私は何かが間違っていると考え続けています.
たとえば、次のコードを見てください。
public static string ToUnsecureString(this SecureString secureString)
{
if(secureString == null)
throw new ArgumentNullException("secureString");
IntPtr unmanagedString = IntPtr.Zero;
try
{
unmanagedString = Marshal.SecureStringToGlobalAllocUnicode(secureString);
return Marshal.PtrToStringUni(unmanagedString);
}
finally
{
Marshal.ZeroFreeGlobalAllocUnicode(unmanagedString);
}
}
データが保護されていることは素晴らしいことですが、最終的に標準の文字列に再び設定されるだけで、実際には何の意味があるのでしょうか?
char[]
パスワードを に保存し、 を作成した後にゼロにできることはわかっていますがSecureString
、文字列を取得するときに何をすればよいでしょうか? それを として取得する方法がわかりませんでした。また、メモリに返された文字列をchar[]
呼び出すだけではありませんか?.ToCharArray()
Marshal.PtrToStringUni(...)
私は非常に基本的な何かを見逃していますか?ありがとう。