Авторизация пользователя. Как хранить логин и пароль - C#
Формулировка задачи:
Всем добрый день!
Наконец-то добралась до авторизации пользователя. Отсюда вопрос:
Где и как хранить логины и пароли?
хочется в файле на диске. но его наверно надо как-то закодировать... как?
сразу скажу, что прогу надо защитить не от супер хакера, а от простого рядого юзера, чтобы он не мог войти в режиме администратора и не мог узнать логин/пароль админа просто открыв файлик на диске.
то есть как бы файлик защитить, но попроще?!
заранее всем спасибо за код или ссылочки (или хотя бы правильную формулировку запроса в гугл =) )!!!
Решение задачи: «Авторизация пользователя. Как хранить логин и пароль»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Security.Cryptography; namespace MyNameSpace { class Encryptor { string encryPass; string encryString; public Encryptor() { encryPass = CreSap(); } public Encryptor(string encrStr) { encryPass= CreSap(); encryString = Encrypt(encrStr); } public string EncryptStr { get { return encryString; } set { encryString = Encrypt(value); } } double SimAlgEncry(int n) { if (n == 0) { return 0; } else { if (n == 1) { return 1; } else { return SimAlgEncry(n - 1) + SimAlgEncry(n - 2); } } } string CreSap() { return Math.Pow(SimAlgEncry(10),3).ToString(); } /// <summary> /// Encrypt string /// </summary> /// <param name="source_str"></param> /// <returns></returns> string Encrypt(string source_str) { // Получаем из строки набор байт, которые будем шифровать byte[] source_data = Encoding.UTF8.GetBytes(source_str); // Алгоритм SymmetricAlgorithm sa_in = Rijndael.Create(); // Объект для преобразования данных ICryptoTransform ct_in = sa_in.CreateEncryptor( (new PasswordDeriveBytes(encryPass, null)).GetBytes(16), new byte[16]); // Поток MemoryStream ms_in = new MemoryStream(); // Шифровальщик потока CryptoStream cs_in = new CryptoStream(ms_in, ct_in, CryptoStreamMode.Write); // Записываем шифрованные данные в поток cs_in.Write(source_data, 0, source_data.Length); cs_in.FlushFinalBlock(); // Создаем строку return Convert.ToBase64String(ms_in.ToArray()); // Выводим зашифрованную строку } /// <summary> /// Decrypt string /// </summary> /// <param name="crypt_str"></param> /// <returns></returns> string Decrypt(string crypt_str) { // Получаем массив байт byte[] crypt_data = Convert.FromBase64String(crypt_str); // Алгоритм SymmetricAlgorithm sa_out = Rijndael.Create(); // Объект для преобразования данных ICryptoTransform ct_out = sa_out.CreateDecryptor( (new PasswordDeriveBytes(encryPass, null)).GetBytes(16), new byte[16]); // Поток MemoryStream ms_out = new MemoryStream(crypt_data); // Расшифровываем поток CryptoStream cs_out = new CryptoStream(ms_out, ct_out, CryptoStreamMode.Read); // Создаем строку StreamReader sr_out = new StreamReader(cs_out); string source_out = sr_out.ReadToEnd(); return source_out; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д