Хм ... Не хранить в настройках AppConfig.
Если вы не можете использовать для этого базу данных (для хранения хешированных и зашифрованных строк), получите новый файл для этого, вы даже можете защитить его, чтобытолько учетная запись пользователя службы для его чтения / изменения или сохранения в каталоге профиля службы (в каталоге профиля учетной записи пользователя)
Я бы сделал это с использованием структуры INI-файлов, более легкой для чтения, чем XML, гдекаждая строка содержит что-то вроде
var mergedCredential = string.Format("{0}|{1}", "user@here.com" , "P@ssw0rd");
User1HashedCredentials=EncryptString("new username", mergedCredential);
Я использовал канал, чтобы «объединить» учетные данные, так как вы можете запретить пользователям использовать его для имени пользователя
Когда вы расшифровываете, вы разделяете на «|»
var credentials = DecryptString("new username", User1HashedCredentials);
var splitted = credentials.Split('|');
Username = splitted[0]
Password = splitted[1]
Пример файла ini:
[Пользователи]
Количество = 5
[SendEmailSection]
User1 = dsaa $ # asdasd $ # @ rr ==
User2 = dggggjh7 / sd $ # @ rr ==
User3 = dsaasd "/ $% asdasd $ # @ rr ==
User4 = dsas / & "dasd $ # @ rr ==
User5 = dsAa & s3dasd $ # @ rr ==
Что проще в обслуживании и модификации.Вы даже можете создать свои собственные специализированные разделы для чтения и записи ini, разделенные на "="