<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-2273964894420794533</atom:id><lastBuildDate>Fri, 13 Sep 2024 20:50:38 +0000</lastBuildDate><title>Блог по программированию на C#.NET</title><description>Блог по программированию на C# .NET. Как что написать. Для начинающего прграммиста и не только.</description><link>http://dotnetuu.blogspot.com/</link><managingEditor>noreply@blogger.com (Pavel Bilous)</managingEditor><generator>Blogger</generator><openSearch:totalResults>2</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2273964894420794533.post-5207006919175980960</guid><pubDate>Tue, 05 Jan 2010 15:52:00 +0000</pubDate><atom:updated>2010-01-05T07:54:31.184-08:00</atom:updated><title>Программа шифрования алгоритмом TripleDES. Часть первая</title><description>&lt;style type=&quot;text/css&quot;&gt;&lt;br /&gt;        .style1&lt;br /&gt;        {&lt;br /&gt;            font-family: &quot;Courier New&quot; , Courier, monospace;&lt;br /&gt;            color: #009933;&lt;br /&gt;        }&lt;br /&gt;        .style2&lt;br /&gt;        {&lt;br /&gt;            font-family: &quot;Courier New&quot; , Courier, monospace;&lt;br /&gt;        }&lt;br /&gt;        .style3&lt;br /&gt;        {&lt;br /&gt;            color: #0033CC;&lt;br /&gt;            font-size: x-small;&lt;br /&gt;        }&lt;br /&gt;        .style4&lt;br /&gt;        {&lt;br /&gt;            font-family: &quot;Courier New&quot; , Courier, monospace;&lt;br /&gt;            font-size: x-small;&lt;br /&gt;        }&lt;br /&gt;        .style5&lt;br /&gt;        {&lt;br /&gt;            font-size: x-small;&lt;br /&gt;        }&lt;br /&gt;        .style6&lt;br /&gt;        {&lt;br /&gt;            color: #339933;&lt;br /&gt;        }&lt;br /&gt;        .style7&lt;br /&gt;        {&lt;br /&gt;            color: #2B91AF;&lt;br /&gt;        }&lt;br /&gt;        .style9&lt;br /&gt;        {&lt;br /&gt;            color: #0000CC;&lt;br /&gt;        }&lt;br /&gt;        .style11&lt;br /&gt;        {&lt;br /&gt;            color: #003399;&lt;br /&gt;        }&lt;br /&gt;&lt;/style&gt;&lt;br /&gt;&lt;p&gt;       Статья по криптографии, которую я разместил немного ниже, объясняет базовые принципы&lt;br /&gt; сохранения конфиденциальности информации. Это конечно хорошо, но можно ли написать&lt;br /&gt; программу на C# так, чтобы она кодировала наш текст, и соответственно декодировала&lt;br /&gt; его?&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;       Да. И достаточно просто.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;       Я написал программу, которая демонстрирует алгоритм шифрования TripleDES. Немного&lt;br /&gt; об алгоритме: алгоритм симметричный, то есть шифруем и дешифруем текст, при помощи&lt;br /&gt; одного и того же пароля (ключа). Если верить Википедии, то –&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Triple DES&lt;/b&gt; (3DES) — симметричный блочный шифр, созданный Уитфилдом Диффи,&lt;br /&gt; Мартином Хеллманом и Уолтом Тачманном в 1978 году на основе алгоритма DES, с целью&lt;br /&gt; устранения главного недостатка последнего — малой длины ключа (56 бит), который&lt;br /&gt; может быть взломан методом полного перебора ключа. Скорость работы 3DES в 3 раза&lt;br /&gt; ниже, чем у DES, но криптостойкость намного выше — время, требуемое для криптоанализа&lt;br /&gt; 3DES, может быть в миллиард раз больше, чем время, нужное для вскрытия DES. (c)Wikipedia&lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;br /&gt; В нашей программе мы будем использовать класс &lt;span class=&quot;style1&quot;&gt;TripleDESCryptoServiceProvider&lt;/span&gt;.&lt;br /&gt; Он определяет объект-оболочку для доступа к реализации алгоритма TripleDES, предоставляемой&lt;br /&gt; поставщиком служб шифрования (CSP). Для использования этого класса нужно использовать&lt;br /&gt; пространство имен &lt;span class=&quot;style4&quot;&gt;System.Security.Cryptography&lt;/span&gt;.&lt;br /&gt;&lt;/p&gt;  &lt;p class=&quot;style2&quot;&gt;&lt;br /&gt; &lt;span style=&quot;;font-family:courier new;font-size:100%;&quot; class=&quot;style3&quot;  &gt;using&lt;/span&gt;&lt;span class=&quot;style5&quot;  style=&quot;font-size:100%;&quot;&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt; System.Security.Cryptography;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;br /&gt; Поставщик служб шифрования (Cryptography Service Provider, CSP) - это посредник&lt;br /&gt; между операционной системой, которая может управлять им с помощью стандартных функций&lt;br /&gt; CryptoAPI, и исполнителем криптографических операций(это может быть как программа,&lt;br /&gt; так и аппаратный комплекс). программа, так и аппаратный комплекс).&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;      Итак, создаем пустой проект WindowsFormsApplication и называем его TripleDES. На&lt;br /&gt; форме Form1 размещаем такие контролы:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;      - TabControl (находим в ToolBox-Containers)&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;      - Button – на первой закладке – 3, на второй – 2 шт.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;      -TextBox – на первой закладке – 4, на второй – 3 шт.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;      -Label – на первой закладке – 4, на второй – 5 шт.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;      Смотрим на рисунки:&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqIr_ZwrA7K_wkhvVpjSY8PzQMc_LeS8-IpvpIGR6B007Zg-1uvM7euz992EAgYu7lsNrrv5JSk3yGRFy4V4jNGCUVS0v_AhXlntqfwiM7ujJFF2RE1eN4dFh_2uA7LWIv1pCmuQEgHtI/s1600-h/pic1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt; &lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqIr_ZwrA7K_wkhvVpjSY8PzQMc_LeS8-IpvpIGR6B007Zg-1uvM7euz992EAgYu7lsNrrv5JSk3yGRFy4V4jNGCUVS0v_AhXlntqfwiM7ujJFF2RE1eN4dFh_2uA7LWIv1pCmuQEgHtI/s320/pic1.PNG&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguD0dQHgUrr-wG-MXiVXEOQgK3aqyzT-i-cJ7btzfZMYryADYMnrF64xHRpRDYEqoZ10QHgAyunyp57wf8135NkeO7znr-Wjoj66qrNrlgTFtHgDKrZCoNTUONO0nTwOtaorrAI_36WKY/s1600-h/pic2.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguD0dQHgUrr-wG-MXiVXEOQgK3aqyzT-i-cJ7btzfZMYryADYMnrF64xHRpRDYEqoZ10QHgAyunyp57wf8135NkeO7znr-Wjoj66qrNrlgTFtHgDKrZCoNTUONO0nTwOtaorrAI_36WKY/s320/pic2.PNG&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;  &lt;/p&gt;&lt;p&gt;      После этого каждому элементу задаем свойство текст такие:&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLTxvp41zb0BSUbYVlBxr03M0sW-Epnq5hnORrBfXe9T53tgd98KaVfzyFz95tXzfrW1IvEJ2abKMw61U4M50W8FUHJLZAd3ndS1dAEmcN9vyHfUbn8GvtwmReVD1DwEEGPyS7-DPidEk/s1600-h/pic3.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt; &lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLTxvp41zb0BSUbYVlBxr03M0sW-Epnq5hnORrBfXe9T53tgd98KaVfzyFz95tXzfrW1IvEJ2abKMw61U4M50W8FUHJLZAd3ndS1dAEmcN9vyHfUbn8GvtwmReVD1DwEEGPyS7-DPidEk/s320/pic3.PNG&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2F60G6TO7fRMMGJIM7ZNQ6UzvqaENBy8OVL3fqUIQ38U7lxR5cQlqG2ZNelOMmPFYz492g6c4NPihhP2EhLz0wRUgaOnVueL-zLs9PwYqVR7T9be_AFcSmftT5phePq1w-dwSBd_W15I/s1600-h/pic4.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2F60G6TO7fRMMGJIM7ZNQ6UzvqaENBy8OVL3fqUIQ38U7lxR5cQlqG2ZNelOMmPFYz492g6c4NPihhP2EhLz0wRUgaOnVueL-zLs9PwYqVR7T9be_AFcSmftT5phePq1w-dwSBd_W15I/s320/pic4.PNG&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;  &lt;/p&gt;&lt;p&gt;      Теперь немного объясню, что зачем.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style=&quot;font-weight: 700;&quot;&gt;      Вкладка «Шифрование»&lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;br /&gt; Здесь мы можем выбрать текст из файла, или же напечатать текст в TextBox для текста&lt;br /&gt; (большой такой). Если вы открываете текст из текстового файла (*.doc не поддерживаются),&lt;br /&gt; тогда текст из файла автоматически отобразится в TextBox для текста.&lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;br /&gt; Пароль – нужен фиксированной длинны, которая равна 24 буквам. На одну букву приходится&lt;br /&gt; 8 байт памяти, и в итоге пароль получается длинной в 24 * 8 = 192 байта. В нашем&lt;br /&gt; случае может использоваться пароль любой длинны, если только он меньше 24 символов.&lt;br /&gt; В моей программе короткий пароль дублируется и дописывается к уже существующему&lt;br /&gt; несколько раз. То есть вы ввели «ключ», а программа сделает «ключключключключключ».&lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;br /&gt; Вектор инициализации (IV) – нужен для задания параметров блочного шифрования. Он&lt;br /&gt; генерируется при шифровании, а также генерируется совершенно другим при дешифровании.&lt;br /&gt; Поэтому мы запоминаем его в локальной переменной IVector.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt; &lt;span style=&quot;;font-family:courier new;font-size:100%;&quot;  &gt;protected byte[] IVector = null;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Путь куда шифруем – путь, куда сохраняем текстовый файл.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style=&quot;font-weight: 700;&quot;&gt;      Вкладка «Дешифрование»&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;      Путь к файлу – путь к файлу для дешифровки. Вектор (IV) – берем с переменной IVector.&lt;br /&gt; Для наглядности отображает его через метку label9.&lt;br /&gt;&lt;/p&gt;    &lt;p   style=&quot;;font-family:&#39;Courier New&#39;,Courier,monospace;font-size:small;&quot;&gt;&lt;span class=&quot;style6&quot;  style=&quot;font-size:100%;&quot;&gt;// Создаем новый TripleDESCryptoServiceProvider обьект &lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;br /&gt;&lt;/span&gt;                 &lt;span class=&quot;style6&quot;  style=&quot;font-size:100%;&quot;&gt;// для генерирования вектора инициализации (IV).&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;style7&quot;  style=&quot;font-size:100%;&quot;&gt;TripleDESCryptoServiceProvider&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt; tDESalg = &lt;/span&gt;&lt;span class=&quot;style9&quot;  style=&quot;font-size:100%;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;style7&quot;  style=&quot;font-size:100%;&quot;&gt;TripleDESCryptoServiceProvider&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;();&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;style6&quot;  style=&quot;font-size:100%;&quot;&gt;// Для наглядности выводим значение вектора инициализации &lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;style9&quot;  style=&quot;font-size:100%;&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt; temp = null;&lt;br /&gt;&lt;br /&gt;for (                &lt;/span&gt;&lt;span class=&quot;style11&quot;  style=&quot;font-size:100%;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt; i = 0; i &amp;lt; tDESalg.IV.Length; i++)&lt;br /&gt;{&lt;br /&gt;temp += tDESalg.IV[i].ToString();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;tbVector.Text = temp;&lt;br /&gt;lVector.Text = temp;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;                                                                &lt;span class=&quot;style6&quot;  style=&quot;font-size:100%;&quot;&gt;// Запоминаем вектор в локальной переменной&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;br /&gt; IVector IVector = tDESalg.IV;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;Дешифрованная инф. – наш текст после дешифровки.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Подведем итоги – чтобы зашифровать информацию алгоритмом TripleDES, нужен пароль&lt;br /&gt; (ключ) и вектор инициализации. Чтобы расшифровать информацию, нужны тот же пароль&lt;br /&gt; и вектор инициализации.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;      На этом первая часть разработки программы закончена. Вторую допечатаю немного позже.&lt;br /&gt; Там уже будет код для обработчиков событий, код методов для кодирования, декодирования.&lt;br /&gt; Как говорится в фильмах – продолжение следует.&lt;br /&gt;&lt;/p&gt;</description><link>http://dotnetuu.blogspot.com/2010/01/blog-post.html</link><author>noreply@blogger.com (Pavel Bilous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqIr_ZwrA7K_wkhvVpjSY8PzQMc_LeS8-IpvpIGR6B007Zg-1uvM7euz992EAgYu7lsNrrv5JSk3yGRFy4V4jNGCUVS0v_AhXlntqfwiM7ujJFF2RE1eN4dFh_2uA7LWIv1pCmuQEgHtI/s72-c/pic1.PNG" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2273964894420794533.post-4243266048649580377</guid><pubDate>Mon, 04 Jan 2010 21:51:00 +0000</pubDate><atom:updated>2010-01-04T13:57:47.407-08:00</atom:updated><title>Видео-уроки по C#</title><description>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjPssmK258NtPcl_tNHRMMdT0RY3vBxTbXqxEcCxYziY3NYBNDBHwMJo7DySIPnnYR_ynEW51YKY-mUE4RP7lMc8V7iFnnKSIitham1ngQ66zWfF_4Kph7pMBzQQlJ2fuhWTFuBInTqR2j/s1600-h/pic111.PNG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 251px; height: 131px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjPssmK258NtPcl_tNHRMMdT0RY3vBxTbXqxEcCxYziY3NYBNDBHwMJo7DySIPnnYR_ynEW51YKY-mUE4RP7lMc8V7iFnnKSIitham1ngQ66zWfF_4Kph7pMBzQQlJ2fuhWTFuBInTqR2j/s320/pic111.PNG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5423006509401979282&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Недавно наткнулся на сайт techdays.ru. Там ну просто очень много информации по программированию на C# и других языках программирования. Сайт представляет собос базу видео-докладов на различные темы. Можно найти информацию по работе с базами данных, ASP.NET, Ajax.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://techdays.ru&quot;&gt;techdays.ru&lt;/a&gt;</description><link>http://dotnetuu.blogspot.com/2010/01/c.html</link><author>noreply@blogger.com (Pavel Bilous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjPssmK258NtPcl_tNHRMMdT0RY3vBxTbXqxEcCxYziY3NYBNDBHwMJo7DySIPnnYR_ynEW51YKY-mUE4RP7lMc8V7iFnnKSIitham1ngQ66zWfF_4Kph7pMBzQQlJ2fuhWTFuBInTqR2j/s72-c/pic111.PNG" height="72" width="72"/><thr:total>2</thr:total></item></channel></rss>