Авторизация пользователя. Как хранить логин и пароль - 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;
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д