0


1

私はwinformアプリケーションといくつかのWebサービスへのログインのリストを持っています。 [覚えている]をチェックすると、暗号化されたパスワードと共に辞書をファイルにシリアル化しますが、これがそのようなことをする最善の方法であるかどうかと思います。 これが私のコードです

public void LoginsInit(){FileStreamファイル= new FileStream(loginsFilePath、FileMode.OpenOrCreate); {BinaryFormatter formatter = new BinaryFormatter();}をお試しください。 loginsDictionary =(辞書)formatter.Deserialize(ファイル); string [] allusers = loginsDictionary.Keys.ToArray(); int usersCount = allusers.Length; userNameTextBox.Text = allusers [usersCount  -  1]; } catch(SerializationException ex){loginsDictionary = new Dictionary();} Console.WriteLine( "ファイルを開けませんでした:" ex.Message);最後に{file.Close();} }}

private void login_Click(オブジェクトセンダ、EventArgs e){// LoginToService();ユーザー名の文字列。文字列パスワード。 username = serviceClientReference.UserLogin = userNameTextBox.Text; password = serviceClientReference.Password = EncryptDecrypt.Encrypt(this.passwordTextBox.Text、EncryptDecrypt.c_strEncryptkey1、EncryptDecrypt.c_strEncryptkey2);

if(rememberMe.Checked){if(loginsDictionary.ContainsKey(username))loginsDictionary [username] =パスワード;それ以外の場合はloginsDictionary.Add(ユーザー名、パスワード)。 FileStream file = new FileStream(loginsFilePath、FileMode.Create); {BinaryFormatter formatter = new BinaryFormatter();}をお試しください。 formatter.Serialize(file、loginsDictionary); file.Flush(); } catch(SerializationException ex){Console.WriteLine( "ファイルのオープンに失敗しました:" ex.Message);最後に{file.Close();} }

ストリングerrorStr; int errorNo; {bool res = serviceClientReference.EstablishConnection(out errorStr、out errorNo);を試してください。 if(!res){MessageBox.Show(errorStr); catch(例外例外){Logger.Log(TraceLevel.Error、 ""、exception); MessageBox.Show( "致命的なエラーMUにログインできません"); }}

private void usernameTextBox_TextChanged(オブジェクト送信側、EventArgs e){if(loginsDictionary.ContainsKey(userNameTextBox.Text))passwordTextBox.Text = EncryptDecrypt.Decrypt(loginsDictionary [userNameTextBox.Text]、EncryptDecrypt.c_strEncryptkeypt_crypt2) }

3 Answer


3


あなたはあなたの鍵を管理するために DPAPIを使うことを考慮したいと思うかもしれません。


1


アプリケーションインスタンス間でユーザー固有の*設定*を保持しようとしている場合は、.NETに組み込まれている アプリケーション設定アーキテクチャを確認してください。 それはあなたに持続性とリロード機能を与えます(いくつかの設定が必要です)。 セキュリティと機能を強化するための 独立型ストレージもあります。 何を使用しても、パスワードの暗号化は続行されます。


0


パスワードなどの機密情報を管理する場合は、 SecureStringクラスを使用して資格情報を保存することをお勧めします。