Назад
Создание прибыльного бизнеспроекта на базе сайта

SEO + ASP.NET 4.0 + БИЗНЕСМОДЕЛЬ = ПРИБЫЛЬНЫЙ САЙТ

Инструмент быстрого построения прибыльного онлайн бизнеса своими силами без капиталовложений за 4 месяца все подробности на SEO + ASP.NET 4.0.

Подписка на рассылку

МАГИЯ C#!

Создание вебсайта с формой автоматического приема онлайн платежей по WebMoney!
Ваше имя
Ваш e-mail
Уроки по ASP.NET c# ADO.NET
     

18 видеоуроков
более 5 часов
по созданию сайта,
выполняющего
продажи ваших продуктов (физических/электронных) на полном автомате с личным оповещением на e-mail, а также ...
DVD-курс по C#, .NET

3 часть. Введение в ASP.NET. WebServices Профессиональная подготовка разработчика по языку C# на платформе .NET

asp.net webservices dvd c# gridview Гудок курс Более 65 подробных видео уроков по теоретическим основам технологии сайтостроения ASP.NET и процессу создания и использованию вебсервисов.

DVD-курс по C#, .NET

2А часть. XML/TXT в аспекте ADO.NET Профессиональная подготовка разработчика по языку C# на платформе .NET

xml txt dvd c# ADO ADO.NET Гудок курс 70 подробных видео уроков по работе с форматами xml, txt, по работе с файлами и директориями. Разработка высокоорганизованных свойств для значительного сокращения объема исходного кода и облегчения дальнейшей модификации и многое-многое другое...

DVD-курс по C#, .NET

1 часть. Windows Forms Профессиональная подготовка разработчика по языку C# на платформе .NET

Профессиональная подготовка на c# А. Гудок

185 подробнейших уроков (70 часов) лекций в формате видеоуроков по теории языка c# и платформы .NET. Практическое закрепление теоретического материала на примере создания Windows Forms - приложения видеоигры "Tanks"

DVD-курс по C#, .NET

2 часть. ADO.NET/SQL Профессиональная подготовка разработчика по языку C# на платформе .NET

Профессиональная подготовка на c# А. Гудок ADO.NET sql

165 подробных видео уроков по созданию приложений распределенных баз данных на примере разработки проектов с использований технологий ADO.NET (Connected model, Disconnected model, Typed DataSet, ...)


Я записываю курсы!
  Курс валют

НБУ курс евро






Шифрование на c# (хеш-код строки по алгоритму MD5)



Все мы знакомы с таким понятием как регистрация на сайтах с последующим прохождением авторизации/аутентификации.

Действительно, как минимум, при регистрации в любой мало-мальски защищенной системе следует указывать логин и пароль.

Естественно, логин и пароль хранятся в базе данных, и не имеет значения, какого типа, хоть SQL-Server, хоть обычные текстовые файлы – без разницы.

Проблема заключается в том, что если к такой БД получат доступ сторонние особы, то все логины/пароли пользователей будут «как на ладоне».

В этом случае целесообразно шифровать пароли. То есть, при регистрации нового пользователя, в БД заносится предварительно зашифрованный пароль пользователя, так сказать в закрытом виде.

Шифровать можно по своему собственному алгоритму, например, после каждого символа в пароле дописывать некоторый предварительно сформированный набор символов, или последовательность символов пароля, записанных наоборот, или еще что-нибудь, что вы придумаете сами.

Но такой подход чреват тем, что все таки имеется возможность обнаружить ключ к расшифровыванию. Это способны достаточно быстро сделать специальные программы. Поэтому, в таких случаях следует отдавать предпочтение хеш-представлению пароля.

Для такой задачи существует алгоритм MD5. По данному алгоритму, возвращается значение в виде 32-разрядной шестнадцатеричной строки. Одним словом, имея любой длины набор символов (строку) и применив к ней алгоритм шифрования MD5, мы получим строку в 32 символа, причем в 16-ричном представлении.

Собственно, сам метод прост:

using System.Security.Cryptography;

string GetHashString(string s)
    {
	  //переводим строку в байт-массим
      byte[] bytes = Encoding.Unicode.GetBytes(s);

	  //создаем объект для получения средст шифрования
      MD5CryptoServiceProvider CSP =
          new MD5CryptoServiceProvider();
        
	  //вычисляем хеш-представление в байтах
	  byte[] byteHash = CSP.ComputeHash(bytes);

      string hash = string.Empty;

	  //формируем одну цельную строку из массива
      foreach (byte b in byteHash)
          hash += string.Format("{0:x2}", b);

      return hash;
    }

Данный метод конвертирует простой символ «1» в значение «06d49632c9dc9bcb62aeaef99612ba6b», а «myparol» в «1306b1dbf201d74b03a144ab22e6d203»

Конечно, можно оставить в таком виде, но заносить в БД пароль в стринговом представлении не стоит, лучше использовать тип ячейки Uniqueidentifier.

А потому, данный метод можно дополнить конвертацие результата типа String в Guid:

Guid GetHashString(string s)
    {
	  //переводим строку в байт-массим
      byte[] bytes = Encoding.Unicode.GetBytes(s);

	  //создаем объект для получения средст шифрования
      MD5CryptoServiceProvider CSP =
          new MD5CryptoServiceProvider();
        
	  //вычисляем хеш-представление в байтах
	  byte[] byteHash = CSP.ComputeHash(bytes);

      string hash = string.Empty;

	  //формируем одну цельную строку из массива
      foreach (byte b in byteHash)
         hash += string.Format("{0:x2}", b);

      return new Guid(hash);
    }

Следует знать, что обратного алгоритма не существует. Расшифровке зашифрованные по MD5 данные не поддаются, а потому проверять пароль зарегистрированного пользователя при попытке входа следует также приводить вводимый пароль к хеш-значению и только после этого сравнивать с находящимся в БД.



Больше информации читайте по теме:

Отписка от событий в c#
Примеры регулярных выражений на c# (класс RegularExpressions.Regex)
c# - итератор для списка Dictionary (foreach для словаря)
Перемешивание списков (массивов) любых типов на c# - противоположность сортировки
c# - CultureInfo (IFormatProvider) и конвертация, приведение числовых типов
Работа в c# с DateTime - получение набора дат в текущем году
GZip - архивация (упаковка) файлов на c#
DateTime - пример определения даты и времени
Время выполнения операций c#
Паттерн (шаблон) SingleTon средствами c#
Обобщенная коллекция Dictionary
c# структуры - не классы?! А что же это - struct VS class
Создание пользовательских событий на c#
Выборка файлов из директории и поддиректорий на c#
Делегаты и методы на c#
Запуск одного экземпляра приложения на c#
c# - Битовый флаг enum



Оценить статью:

Оценивая статью, Вы подсказываете нам насколько данная информация стала полезной именно для Вас. Мы ожидаем, прежде всего, оценку доступности материала для понимания и простоты его изложения. Дополнительные комментари, вопросы, дополнения и замечания Вы можете указать на странице От Вас

Частичное, или полное копирование материала данной статьи возможно лишь при размещении ссылки на данную страницу.


            
        


        Павел    24.12.2011 20:12:56
        

Очепятка: «как на ладоне» - правильно «как на ладони».

109.87.50.58




Имя:  


Текст комментариев (не больше 600 знаков):  
введите не более 600 знаков



Введите символы с картинки:
Капча имеет "срок годности". Поэтому, если необходимо обновите страницу.



Сантехник срочно
c# курс Гудок   курс по ASP.NET Гудок   курс по ADO.NET Гудок   курс по XML txt Гудок   курс по рефлексии и многопоточности Гудок