Авторизация пользователя. Как хранить логин и пароль - 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;
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5
Похожие ответы