<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2276991</guid>
        <pubDate>Thu, 28 May 2009 04:54:37 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2276991</link>
        <description><![CDATA[leo: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=273438&view=findpost&p=2276736'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>mawa &#064; <time class="tag-quote__quoted-time" datetime="2009-05-27T17:57:48+00:00">27.05.09, 17:57</time></span><div class='quote '>А где я напутал - вызов FormatMessage?</div></div><br>
Видимо вызвал GetLastError повторно после вызова другой функции (например RaiseLastOSError или ShowMessage), хотя в #10 я тебе показывал как надо делать - вызвать один раз сразу после ошибки и сохранить значение в переменной для последующих манипуляций.<br>
 <br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=273438&view=findpost&p=2276938'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>mawa &#064; <time class="tag-quote__quoted-time" datetime="2009-05-27T23:32:43+00:00">27.05.09, 23:32</time></span><div class='quote '>Проблема в том что когда шифруется слово получается длина 32 символа, затем это слово записуется в файлик. А при расшифровании считывается из файлика, но считывается 8 символов&#33;&#33; Что делать?</div></div><br>
Мда, чудак ты, брат ;)<br>
С чего ты взял, что после шифрования твой текст останется вообще читабельным текстом, да еще и однострочным. Все стандартные алгоритмы шифрования - двоичные, а не символьные, поэтому в результате шифрования в строке могут оказаться служебные символы, например перевода строки &#036;13, &#036;10 и даже &#036;0 - признак конца текста. Поэтому записывать&#092;читать зашифрованные данные нужно в двоичный файл, а не в текстовый<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;f:file;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;...</div><div class="code_line">&nbsp;&nbsp;AssignFile(f,FileName);</div><div class="code_line">&nbsp;&nbsp;//запись строки str в файл</div><div class="code_line">&nbsp;&nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp;rewrite(f,1);</div><div class="code_line">&nbsp;&nbsp; &nbsp;blockwrite(f,str[1],Length(str));</div><div class="code_line">&nbsp;&nbsp;finally</div><div class="code_line">&nbsp;&nbsp; &nbsp;CloseFile(f);</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;&nbsp;...</div><div class="code_line">&nbsp;&nbsp;//чтение строки str из файла</div><div class="code_line">&nbsp;&nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp;reset(f,1);</div><div class="code_line">&nbsp;&nbsp; &nbsp;SetLength(str,FileSize(f)); //задаем размер строки = размеру файла</div><div class="code_line">&nbsp;&nbsp; &nbsp;blockread(f,str[1],Length(str)); //читаем весь файл</div><div class="code_line">&nbsp;&nbsp;finally</div><div class="code_line">&nbsp;&nbsp; &nbsp;CloseFile(f);</div><div class="code_line">&nbsp;&nbsp;end;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script> <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2009-05-28T09:31:16+04:00">28.05.09, 05:31</time></span></span><br>
<strong class='tag-b'>mawa</strong><br>
И еще, несмотря на мое замечание #16, ты продолжаешь использовать вариант шифрования #29, предполагающий что длина зашифрованного текста всегда больше исходной. Ты уверен, что это так ? Я не уверен. Ясно, что AES блочный шифр, поэтому длина входного текста выравнивается вверх на 16 или 32 байта. Но если длина твоего login уже равна 16 или 32, то длина может и не измениться и в итоге алгоритм #29 зашифрует строку дважды.<br>
Правда я в #16 тоже накосячил с длинами, поэтому правильный вариант должен быть такой:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp;X:=Length(login);</div><div class="code_line">&nbsp;&nbsp;if CryptEncrypt(key, 0, True, 0, nil, @X, X) then //при pbData=Nil просто в X возвращается требуемая длина</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;Y:=Length(login);</div><div class="code_line">&nbsp;&nbsp; &nbsp;if X &#62; Y then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;SetLength(login, X)</div><div class="code_line">&nbsp;&nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;UniqueString(login);</div><div class="code_line">&nbsp;&nbsp; &nbsp;if not CryptEncrypt(key, 0, True, 0, Pointer(login), @Y, X) then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;RaiseLastOSError</div><div class="code_line">&nbsp;&nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp;if Y &#60;&#62; Length(login) then SetLength(login, Y);</div><div class="code_line">&nbsp;&nbsp;end</div><div class="code_line">&nbsp;&nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp;RaiseLastOSError;</div></ol></div></div></div></div>]]></description>
        <author>leo</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2276972</guid>
        <pubDate>Thu, 28 May 2009 04:23:53 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2276972</link>
        <description><![CDATA[arj99: Писать и читать файл как двоичный.]]></description>
        <author>arj99</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2276938</guid>
        <pubDate>Wed, 27 May 2009 23:32:43 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2276938</link>
        <description><![CDATA[mawa: Частный случай:<br>
Проблема в том что когда шифруется слово получается длина 32 символа, затем это слово записуется в файлик. А при расшифровании считывается из файлика, но считывается 8 символов&#33;&#33; Что делать?<br>
Зашифр.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">//созд.файла</div><div class="code_line">&nbsp;&nbsp;AssignFile(f,Edit3.Text+&#39;.txt&#39;);</div><div class="code_line">&nbsp;&nbsp;Rewrite(f);</div><div class="code_line">&nbsp;&nbsp;CloseFile(f);</div><div class="code_line">&nbsp;&nbsp;//открытие на до запись</div><div class="code_line">&nbsp;&nbsp;AssignFile(f,Edit3.Text+&#39;.txt&#39;);</div><div class="code_line">&nbsp;&nbsp;Append(f);</div><div class="code_line">&nbsp;&nbsp;//шифрование</div><div class="code_line">&nbsp;&nbsp;login:=login+&#39;|@@|&#39;+pass;</div><div class="code_line">&nbsp;&nbsp;str:=Zawufrovat(password,login);</div><div class="code_line">&nbsp;&nbsp;writeln(f,str);</div><div class="code_line">&nbsp;&nbsp;CloseFile(f);</div></ol></div></div></div></div><br>
расшифр<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">//открытие файла</div><div class="code_line">&nbsp;&nbsp;t:=OpenDialog1.FileName;</div><div class="code_line">&nbsp;&nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp;AssignFile(f,t);</div><div class="code_line">&nbsp;&nbsp; &nbsp;reset(f);</div><div class="code_line">&nbsp;&nbsp;except;</div><div class="code_line">&nbsp;&nbsp; ShowMessage(&#39;Ошибка чтения файла !&#39;);</div><div class="code_line">&nbsp;&nbsp; Exit;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;&nbsp;//читаем логин+пароль+конст</div><div class="code_line">&nbsp;&nbsp;readln(f,str);</div><div class="code_line">&nbsp;&nbsp;ShowMessage(IntToStr(length(str))+&#39; &nbsp;&#39;+str[length(str)]);</div><div class="code_line">&nbsp;&nbsp;password:=MaskEdit1.Text+p_const;</div><div class="code_line">&nbsp;&nbsp;//расшифрование</div><div class="code_line">&nbsp;&nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp;str:=Raswufrovat(password,str);</div><div class="code_line">&nbsp;&nbsp;except;</div><div class="code_line">&nbsp;&nbsp; ShowMessage(&#39;Не верный пароль 1!&#39;);</div><div class="code_line">&nbsp;&nbsp; memo2.Lines.Add(password);</div><div class="code_line">&nbsp;&nbsp; Exit;</div><div class="code_line">&nbsp;&nbsp;end;</div></ol></div></div></div></div>]]></description>
        <author>mawa</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2276931</guid>
        <pubDate>Wed, 27 May 2009 22:12:37 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2276931</link>
        <description><![CDATA[mawa: А почему некоторые слова шифруется, но не расшифровываются (p.s. пароль ввожу верно)? Пишит - плохие данные&#33;<br>
Шифрование<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp;login:=text;</div><div class="code_line">&nbsp;&nbsp;// вход: login - данные для шифрования</div><div class="code_line">&nbsp;&nbsp;// Шаг 1: определяем, сколько надо байт для хранения зашифрованного текста</div><div class="code_line">&nbsp;&nbsp;X := Length(login);</div><div class="code_line">&nbsp;&nbsp;if not CryptEncrypt(key, 0, True, 0, Pointer(login), @X, Length(login)) then</div><div class="code_line">&nbsp;&nbsp; &nbsp;if GetLastError &#60;&#62; ERROR_MORE_DATA then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;RaiseLastOSError;</div><div class="code_line">&nbsp;&nbsp;// Шаг 2: выделили буфер (уже не 512, а ровно, сколько надо)</div><div class="code_line">&nbsp;&nbsp;Y := Length(login);</div><div class="code_line">&nbsp;&nbsp;SetLength(login, X);</div><div class="code_line">&nbsp;&nbsp;// Шаг 3: шифрование</div><div class="code_line">&nbsp;&nbsp;if not CryptEncrypt(key, 0, True, 0, Pointer(login), @Y, Length(login)) then</div><div class="code_line">&nbsp;&nbsp; &nbsp;RaiseLastOSError;</div><div class="code_line">&nbsp;&nbsp;SetLength(login, Y);</div><div class="code_line">&nbsp;&nbsp;{освобождаем контекст криптопровайдера}</div><div class="code_line">&nbsp;&nbsp;CryptReleaseContext(hProv, 0);</div></ol></div></div></div></div><br>
Расшифрование<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp;login:=z_text;</div><div class="code_line">&nbsp;&nbsp;X := Length(login);</div><div class="code_line">&nbsp;&nbsp;if not CryptDecrypt(key, 0, True, 0, Pointer(login), @X) then</div><div class="code_line">&nbsp;&nbsp; RaiseLastOSError</div><div class="code_line">&nbsp;&nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp;if X &#60;&#62; length(login) then</div><div class="code_line">&nbsp;&nbsp; SetLength(login,X);</div><div class="code_line">&nbsp;&nbsp;{освобождаем контекст криптопровайдера}</div><div class="code_line">&nbsp;&nbsp;CryptReleaseContext(hProv, 0);</div></ol></div></div></div></div>]]></description>
        <author>mawa</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2276736</guid>
        <pubDate>Wed, 27 May 2009 17:57:48 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2276736</link>
        <description><![CDATA[mawa: <strong class='tag-b'>CodeMonkey</strong><br>
А где я напутал - вызов FormatMessage? <br>
Я в прошлом году делал лабу по алгоритму RC4, там все было ок, и литературы хватало. А вот с AES, сам не справился&#33;<br>
Еще раз спасибо&#33;]]></description>
        <author>mawa</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2275111</guid>
        <pubDate>Tue, 26 May 2009 09:52:06 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2275111</link>
        <description><![CDATA[CodeMonkey: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=273438&view=findpost&p=2275078'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>leo &#064; <time class="tag-quote__quoted-time" datetime="2009-05-26T09:27:26+00:00">26.05.09, 09:27</time></span><div class='quote '>PS: странно, что у тебя FormatMessage не ту ошибку выдал, т.к. RaiseLastOSError использует тот же механизм</div></div><br>
Я не удивлюсь, если авто вопроса напутал и с вызовом FormatMessage - поэтому FormatMessage возвращал не столько описание ошибки, сколько ошибку при вызове себя или что-то вроде этого. Похоже, автор вопроса больше действует методом научного тыка, слабо понимая, что же вообще он пишет.]]></description>
        <author>CodeMonkey</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2275103</guid>
        <pubDate>Tue, 26 May 2009 09:45:45 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2275103</link>
        <description><![CDATA[leo: <strong class='tag-b'>mawa</strong>, тебе тоже спс - за интересный вопрос ;)]]></description>
        <author>leo</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2275093</guid>
        <pubDate>Tue, 26 May 2009 09:40:13 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2275093</link>
        <description><![CDATA[mawa: <strong class='tag-b'>leo</strong> спасибо за помощь&#33; Очень помоГ&#33;]]></description>
        <author>mawa</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2275088</guid>
        <pubDate>Tue, 26 May 2009 09:36:42 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2275088</link>
        <description><![CDATA[leo: Работать то работает, но при присваивании login:=z_text может копироваться только указатель на строку, в итоге login и z_text будут указывать на один и тот же текст и соотв-но изменение login в Decript приведет также и к изменению z_text. Если это не важно, то тогда вроде и незачем присвоение login:=z_text делать - можно сразу с z_text работать. Если же z_text не должна меняться, то нужно сделать UniqueString(login) <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2009-05-26T09:39:33+00:00">26.05.09, 09:39</time></span></span><br>
Кстати вместо FormatMessage можно использовать SysErrorMessage из SysUtils<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp;e:=GetLastError;</div><div class="code_line">&nbsp;&nbsp;ShowMessage(&#39;Error &#39;+IntToStr(e)+&#39;. &#39;+SysErrorMessage(e));</div></ol></div></div></div></div><br>
PS: Это если вместо генерации исключения просто выдавать сообщение об ошибке]]></description>
        <author>leo</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2275081</guid>
        <pubDate>Tue, 26 May 2009 09:27:45 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2275081</link>
        <description><![CDATA[mawa: <strong class='tag-b'>leo</strong><br>
А зачем сохранять <br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">login:=z_text;</div></ol></div></div></div></div><br>
<br>
Все итак нормально работает?]]></description>
        <author>mawa</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2275078</guid>
        <pubDate>Tue, 26 May 2009 09:27:26 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2275078</link>
        <description><![CDATA[leo: Да, если нужно вывести сообщение или еще что-то сделать. <br>Плюс закрытие всех хэндлов лучше делать в try&#092;finally<br><br>PS: странно, что у тебя FormatMessage не ту ошибку выдал, т.к. RaiseLastOSError использует тот же механизм]]></description>
        <author>leo</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2275069</guid>
        <pubDate>Tue, 26 May 2009 09:16:31 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2275069</link>
        <description><![CDATA[mawa: Вопрос, если пароль не правильный выдает плохие данные, тогда необходимо использовать связку : try - exsept ?]]></description>
        <author>mawa</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2275068</guid>
        <pubDate>Tue, 26 May 2009 09:15:30 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2275068</link>
        <description><![CDATA[leo: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=273438&view=findpost&p=2275018'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>mawa &#064; <time class="tag-quote__quoted-time" datetime="2009-05-26T08:01:58+00:00">26.05.09, 08:01</time></span><div class='quote '>login:=z_text;</div></div><br>
Учти, что при этом после CryptDecrypt строка z_text тоже изменится. Чтобы не изменялась нужно либо добавить<br>
UniqueString(login);<br>
либо сразу вместо присваивания сделать <br>
SetString(login,pChar(z_text),Length(z_text));]]></description>
        <author>leo</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2275061</guid>
        <pubDate>Tue, 26 May 2009 09:10:43 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2275061</link>
        <description><![CDATA[mawa: _________________________<br>
Пример:<br>
Исходное : qweqweqweqwe27@ <br>
<br>
Расшифрованное :<br>
qweqweqweqwe27@ <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2009-05-26T09:14:35+00:00">26.05.09, 09:14</time></span></span><br>
Все работает &#33;&#33;&#33;&#33; <br>
<strong class='tag-b'>leo</strong>    Спасибо  Большое   &#33;&#33;&#33;&#33;&#33;&#33;&#33;&#33; respect&#33;]]></description>
        <author>mawa</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2275060</guid>
        <pubDate>Tue, 26 May 2009 09:08:50 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2275060</link>
        <description><![CDATA[leo: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=273438&view=findpost&p=2275018'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>mawa &#064; <time class="tag-quote__quoted-time" datetime="2009-05-26T08:01:58+00:00">26.05.09, 08:01</time></span><div class='quote '>Расшифровывает, но только в конце слова не понятные символы доставляет&#33;? </div></div><br>
При дешифровке длина текста уменьшается, добавь коррекцию длины:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">if not CryptDecrypt(key, 0, True, 0, Pointer(login), @X) then</div><div class="code_line">&nbsp;&nbsp; RaiseLastOSError</div><div class="code_line">else</div><div class="code_line">if X &#60;&#62; length(login) then SetLength(login,X);</div></ol></div></div></div></div>]]></description>
        <author>leo</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2275018</guid>
        <pubDate>Tue, 26 May 2009 08:01:58 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2275018</link>
        <description><![CDATA[mawa: <strong class='tag-b'>CodeMonkey</strong> Подскажи запутался все равно ругается&#33; <br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">login:=z_text;</div><div class="code_line">X := Length(login);</div><div class="code_line">if not CryptDecrypt(key, 0, True, 0, Pointer(login), @X) then</div><div class="code_line">&nbsp;&nbsp; RaiseLastOSError;</div></ol></div></div></div></div> <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2009-05-26T08:05:50+00:00">26.05.09, 08:05</time></span></span><br>
Спасибо&#33;<br>
Расшифровывает, но только в конце слова не понятные символы доставляет&#33;?]]></description>
        <author>mawa</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2274894</guid>
        <pubDate>Tue, 26 May 2009 05:41:19 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2274894</link>
        <description><![CDATA[leo: Шифровку тоже надо бы подправить, т.к. код #13 предполагает, что длина зашифрованного текста всегда будет больше длины исходного. Лучше сделать так:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp;X:=Length(login);</div><div class="code_line">&nbsp;&nbsp;if CryptEncrypt(key, 0, True, 0, nil, @X, X) then //при pbData=Nil просто в X возвращается требуемая длина</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;if X &#62; Length(login) then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;SetLength(login, X)</div><div class="code_line">&nbsp;&nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;UniqueString(login);</div><div class="code_line">&nbsp;&nbsp; &nbsp;if not CryptEncrypt(key, 0, True, 0, Pointer(login), @X, X) then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;RaiseLastOSError</div><div class="code_line">&nbsp;&nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp;if X &#60;&#62; Length(login) then SetLength(login, X);</div><div class="code_line">&nbsp;&nbsp;end</div><div class="code_line">&nbsp;&nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp;RaiseLastOSError;</div></ol></div></div></div></div>]]></description>
        <author>leo</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2274886</guid>
        <pubDate>Tue, 26 May 2009 05:21:36 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2274886</link>
        <description><![CDATA[CodeMonkey: А дешифровка делается в один шаг. Не надо узнавать размер буфера: исходный текст всегда меньше размером. А вы в своём коде просто откусили от зашифрованного текста кусок и удивляетесь, а чего ж это он ругается на неполные данные.]]></description>
        <author>CodeMonkey</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2274748</guid>
        <pubDate>Mon, 25 May 2009 20:10:31 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2274748</link>
        <description><![CDATA[mawa: Шифрование вроде работает, по крайней мере получается билиберда, но нужно было :<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">if not CryptEncrypt(key, 0, True, 0, Pointer(login), @X, Length(login)) then &nbsp; &nbsp; &nbsp; &nbsp;//@X</div></ol></div></div></div></div>   <br>
А вот на расшифровывание ругается, пишит плохие данные :<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp;login:=z_text;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;X := Length(login);</div><div class="code_line">&nbsp;&nbsp;if not CryptDecrypt(key, 0, True, 0, Pointer(login), @X) then</div><div class="code_line">&nbsp;&nbsp; &nbsp;if GetLastError &#60;&#62; ERROR_MORE_DATA then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;RaiseLastOSError;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;Y := Length(login);</div><div class="code_line">&nbsp;&nbsp;SetLength(login, X);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;if not CryptDecrypt(key, 0, True, 0, Pointer(login), @Y) then</div><div class="code_line">&nbsp;&nbsp; &nbsp;RaiseLastOSError;</div><div class="code_line">&nbsp;&nbsp;SetLength(login, Y);</div></ol></div></div></div></div>]]></description>
        <author>mawa</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2274369</guid>
        <pubDate>Mon, 25 May 2009 11:40:21 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2274369</link>
        <description><![CDATA[CodeMonkey: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=273438&view=findpost&p=2274285'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>mawa &#064; <time class="tag-quote__quoted-time" datetime="2009-05-25T10:09:12+00:00">25.05.09, 10:09</time></span><div class='quote '>Имеются дополнительные данные.</div></div><br>
Значит 512 - мало. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2009-05-25T11:49:05+00:00">25.05.09, 11:49</time></span></span><br>
По идее, надо как-то так:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;login: String;</div><div class="code_line">&nbsp;&nbsp;X, Y: Integer;</div><div class="code_line">...</div><div class="code_line">&nbsp;&nbsp;// вход: login - данные для шифрования</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;// Шаг 1: определяем, сколько надо байт для хранения зашифрованного текста</div><div class="code_line">&nbsp;&nbsp;X := Length(login);</div><div class="code_line">&nbsp;&nbsp;if not CryptEncrypt(key, 0, True, 0, Pointer(login), X, Length(login)) then</div><div class="code_line">&nbsp;&nbsp; &nbsp;if GetLastError &#60;&#62; ERROR_MORE_DATA then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;RaiseLastOSError;</div><div class="code_line">&nbsp;&nbsp;// Шаг 2: выделили буфер (уже не 512, а ровно, сколько надо)</div><div class="code_line">&nbsp;&nbsp;Y := Length(login);</div><div class="code_line">&nbsp;&nbsp;SetLength(login, X);</div><div class="code_line">&nbsp;&nbsp;// Шаг 3: шифрование</div><div class="code_line">&nbsp;&nbsp;if not CryptEncrypt(key, 0, True, 0, Pointer(login), Y, Length(login)) then</div><div class="code_line">&nbsp;&nbsp; &nbsp;RaiseLastOSError;</div><div class="code_line">&nbsp;&nbsp;SetLength(login, Y);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;// выход: login - зашифрованные данные</div></ol></div></div></div></div><br>
<br>
Писал на коленке, могут быть описки.]]></description>
        <author>CodeMonkey</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2274285</guid>
        <pubDate>Mon, 25 May 2009 10:09:12 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2274285</link>
        <description><![CDATA[mawa: ERROR CRYPTENCRYPT -- Unknown error <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2009-05-25T10:21:12+00:00">25.05.09, 10:21</time></span></span><br>
<strong class='tag-b'>CodeMonkey</strong><br>
System Error. Code:234.<br>
Имеются дополнительные данные. Process stopped/ Use step or run to continue/ <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2009-05-25T10:23:00+00:00">25.05.09, 10:23</time></span></span><br>
<strong class='tag-b'>leo</strong><br>
Error of CryptEncrypt : 21<br>
Устройство не готово]]></description>
        <author>mawa</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2274280</guid>
        <pubDate>Mon, 25 May 2009 10:07:48 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2274280</link>
        <description><![CDATA[CodeMonkey: <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">else err := &#39;Unknown error&#39;;</div></ol></div></div></div></div><br>
заменить на<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">else RaiseLastOSError;</div></ol></div></div></div></div>]]></description>
        <author>CodeMonkey</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2274263</guid>
        <pubDate>Mon, 25 May 2009 09:56:09 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2274263</link>
        <description><![CDATA[leo: Попробуй получить описание ошибки через FormatMessage<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;e:cardinal;</div><div class="code_line">&nbsp;&nbsp;mbuf:array[0..511] of char;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;...</div><div class="code_line">&nbsp;&nbsp;e:=GetLastError;</div><div class="code_line">&nbsp;&nbsp;case e of</div><div class="code_line">&nbsp;&nbsp;...</div><div class="code_line">&nbsp;&nbsp;else</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,nil,e,0,mbuf,sizeof(mbuf),nil);</div><div class="code_line">&nbsp;&nbsp; &nbsp;err:=IntToStr(e)+#13#10+mbuf;</div><div class="code_line">&nbsp;&nbsp;end;</div></ol></div></div></div></div>]]></description>
        <author>leo</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2274234</guid>
        <pubDate>Mon, 25 May 2009 09:31:36 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2274234</link>
        <description><![CDATA[mawa: Спасибо&#33; <br>
А вот когда зашифровываю текст, то выдается ошибка &#39;Unknown error&#39;, в чем может быть причина?<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">{получаем контекст криптопровайдера}</div><div class="code_line">CryptAcquireContext(@hProv, nil, nil, PROV_RSA_AES, CRYPT_VERIFYCONTEXT);</div><div class="code_line">&nbsp;{создаем хеш-объект}</div><div class="code_line">CryptCreateHash(hProv, CALG_SHA, 0, 0, @hash);</div><div class="code_line">&nbsp;&nbsp;{хешируем пароль}</div><div class="code_line">CryptHashData(hash, @password[1], length(password), 0);</div><div class="code_line">&nbsp;&nbsp;{создаем ключ на основании пароля для AES_256}</div><div class="code_line">CryptDeriveKey(hProv,CALG_AES_256,hash,0,@key);</div><div class="code_line">..</div><div class="code_line">{выделяем место для буфера}</div><div class="code_line">&nbsp;&nbsp; &nbsp;GetMem(data, 512);</div><div class="code_line">&nbsp;&nbsp; &nbsp;{шифруем данные}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;login:=text; //данные</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;fl:=true;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;l:=length(login);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;for i:=1 to length(login) do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;data^:=ord(login[i]);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if not CryptEncrypt(key, 0, fl, 0, data, @l, l) then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;case int64(GetLastError) of</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ERROR_INVALID_HANDLE: err := &#39;ERROR_INVALID_HANDLE&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ERROR_INVALID_PARAMETER: err := &#39;ERROR_INVALID_PARAMETER&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NTE_BAD_ALGID: err := &#39;NTE_BAD_ALGID&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NTE_BAD_DATA: err := &#39;NTE_BAD_DATA&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NTE_BAD_FLAGS: err := &#39;NTE_BAD_FLAGS&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NTE_BAD_HASH: err := &#39;NTE_BAD_HASH&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NTE_BAD_HASH_STATE: err := &#39;NTE_BAD_HASH_STATE&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NTE_BAD_KEY: err := &#39;NTE_BAD_KEY&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NTE_BAD_LEN: err := &#39;NTE_BAD_LEN&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NTE_BAD_UID: err := &#39;NTE_BAD_UID&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NTE_DOUBLE_ENCRYPT: err := &#39;NTE_DOUBLE_ENCRYPT&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NTE_FAIL: err := &#39;NTE_FAIL&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NTE_NO_MEMORY: err := &#39;NTE_NO_MEMORY&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else err := &#39;Unknown error&#39;; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; &nbsp; &nbsp;&#60;-- &nbsp;выдается данное сообщение</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MessageDlg(&#39;Error of CryptEncrypt: &#39;+err,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mtError, [mbOK], 0);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;exit;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;cript_temp_1[i]:=chr(data^);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;cript_temp_2[i]:=cript_temp_1[i];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;login[i]:=cript_temp_2[i]; &nbsp; //рез-т шифрования</div></ol></div></div></div></div>]]></description>
        <author>mawa</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2274191</guid>
        <pubDate>Mon, 25 May 2009 08:39:08 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2274191</link>
        <description><![CDATA[CodeMonkey: <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp;CALG_AES_256 &nbsp; &nbsp; &nbsp;= 10;</div></ol></div></div></div></div><br>
<br>
<a class='tag-url' href='http://msdn.microsoft.com/en-us/library/aa375549(VS.85).aspx' target='_blank'>Список</a>]]></description>
        <author>CodeMonkey</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2274188</guid>
        <pubDate>Mon, 25 May 2009 08:37:50 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2274188</link>
        <description><![CDATA[--Ins--: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=273438&view=findpost&p=2274126'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>mawa &#064; <time class="tag-quote__quoted-time" datetime="2009-05-25T07:26:38+00:00">25.05.09, 07:26</time></span><div class='quote '>а там нет что делать?</div></div><br>
<br>
Прогуляться по MSDN. Тебе выше ссылку дали. Вот я кликаю по ней, в ней есть еще одна, которая ведет сюда:<br>
http://msdn.microsoft.com/en-us/library/aa375545(VS.85).aspx<br>
Теперь твоя очередь покликать  ;) <br>
<br>
ЗЫ: Если снова константа не будет объявлена - объявляй сам. Значение узнать можно в гугле. По запросу &quot;define+имя_константы&quot; находится код, по которому значение и узнается.]]></description>
        <author>--Ins--</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2274126</guid>
        <pubDate>Mon, 25 May 2009 07:26:38 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2274126</link>
        <description><![CDATA[mawa: <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp;public</div><div class="code_line">&nbsp;&nbsp; &nbsp;{ Public declarations }</div><div class="code_line">&nbsp;&nbsp; &nbsp;hProv: HCRYPTPROV;</div><div class="code_line">&nbsp;&nbsp; &nbsp;key: HCRYPTKEY;</div><div class="code_line">&nbsp;&nbsp; &nbsp;encrypt: boolean;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">....</div><div class="code_line">var hProv: HCRYPTPROV;</div><div class="code_line">&nbsp;&nbsp; &nbsp;hash: HCRYPTHASH;</div><div class="code_line">&nbsp;&nbsp; &nbsp;key: HCRYPTKEY;</div><div class="code_line">&nbsp;&nbsp; &nbsp;data: PByte;</div><div class="code_line">&nbsp;&nbsp; &nbsp;l: DWORD;</div><div class="code_line">&nbsp;&nbsp; &nbsp;fl:boolean;</div><div class="code_line">&nbsp;&nbsp; &nbsp;i:integer;</div><div class="code_line">&nbsp;&nbsp; &nbsp;err,login,cript_rez: string;</div><div class="code_line">&nbsp;&nbsp; &nbsp;cript_temp_1:array[0..65535] of char;</div><div class="code_line">&nbsp;&nbsp; &nbsp;cript_temp_2:string[255];</div><div class="code_line">Const PROV_RSA_AES=24;</div><div class="code_line">....</div><div class="code_line">{получаем контекст криптопровайдера}</div><div class="code_line">CryptAcquireContext(@hProv, nil, nil, PROV_RSA_AES, CRYPT_VERIFYCONTEXT);</div><div class="code_line">&nbsp;</div><div class="code_line">{создаем хеш-объект}</div><div class="code_line">CryptCreateHash(hProv, CALG_SHA, 0, 0, @hash);</div><div class="code_line">&nbsp;</div><div class="code_line">{хешируем пароль}</div><div class="code_line">CryptHashData(hash, @password[1], length(password), 0);</div><div class="code_line">&nbsp;</div><div class="code_line">{создаем ключ на основании пароля для потокового шифра RC4}</div><div class="code_line">CryptDeriveKey(hProv, CALG_RC4, hash, 0, @key);</div><div class="code_line">&nbsp;</div><div class="code_line">{уничтожаем хеш-объект}</div><div class="code_line">CryptDestroyHash(hash);</div><div class="code_line">&nbsp;</div><div class="code_line">{выделяем место для буфера}</div><div class="code_line">&nbsp;&nbsp; &nbsp;GetMem(data, 512);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;{шифруем данные}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;login:=text; //данные</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;fl:=true;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;l:=length(login);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;for i:=1 to length(login) do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;data^:=ord(login[i]);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;CryptEncrypt(key, 0, fl, 0, data, @l, l);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;cript_temp_1[i]:=chr(data^);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;cript_temp_2[i]:=cript_temp_1[i];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;login[i]:=cript_temp_2[i]; &nbsp; //рез-т шифрования</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp;{освобождаем место и закрываем файлы}</div><div class="code_line">&nbsp;&nbsp; &nbsp;FreeMem(data, 512);</div><div class="code_line">&nbsp;&nbsp; &nbsp;{освобождаем контекст криптопровайдера}</div><div class="code_line">&nbsp;&nbsp; &nbsp;CryptReleaseContext(hProv, 0);</div></ol></div></div></div></div><br>
Данный код реализован был для шифра RC4, а как для AES сделать?  :wall: <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2009-05-25T08:22:03+00:00">25.05.09, 08:22</time></span></span><br>
Необходимо указать алгоритм - AES или CALG_AES, а там нет что делать?<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">CryptDeriveKey(hProv, CALG_RC4, hash, 0, @key)</div></ol></div></div></div></div>]]></description>
        <author>mawa</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2274107</guid>
        <pubDate>Mon, 25 May 2009 07:01:37 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2274107</link>
        <description><![CDATA[--Ins--: Объяви сам эту константу. Она равна 24]]></description>
        <author>--Ins--</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2274070</guid>
        <pubDate>Mon, 25 May 2009 06:00:09 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2274070</link>
        <description><![CDATA[mawa: Спасибо&#33; <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2009-05-25T06:50:52+00:00">25.05.09, 06:50</time></span></span><br>
Я обращаюсь через библиотеку wcrypt2.pas, но в ней нет - PROV_RSA_AES, имеется PROV_RSA_FULL и др. Что делать?]]></description>
        <author>mawa</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2274051</guid>
        <pubDate>Mon, 25 May 2009 05:07:12 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2274051</link>
        <description><![CDATA[leo: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=273438&view=findpost&p=2273833'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>mawa &#064; <time class="tag-quote__quoted-time" datetime="2009-05-24T18:38:27+00:00">24.05.09, 18:38</time></span><div class='quote '>где именно нужно указывать, что шифрование будет именно этим алгоритмом (необходимо определенный криптопровайдер или определенный тип?) </div></div><br>
Конкретный алгоритм указывается при создании ключа шифрования, а в CryptAcquireContext нужно указывать имя&#092;тип провайдера, поддерживающего данный алгоритм. Судя по <a class='tag-url' href='http://msdn.microsoft.com/en-us/library/aa386979(VS.85).aspx' target='_blank'>мсдн</a>, AES поддерживается в WinXP и выше провайдером: тип = PROV_RSA_AES, имя = MS_ENH_RSA_AES_PROV]]></description>
        <author>leo</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2273976</guid>
        <pubDate>Sun, 24 May 2009 21:28:48 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2273976</link>
        <description><![CDATA[ViktorXP: насколько я помню то по умолчанию в винде нет провайдера который работает с AES]]></description>
        <author>ViktorXP</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2273833</guid>
        <pubDate>Sun, 24 May 2009 18:38:27 +0000</pubDate>
        <title>Алгоритм АЕS шифрование, расшифрование</title>
        <link>https://forum.sources.ru/index.php?showtopic=273438&amp;view=findpost&amp;p=2273833</link>
        <description><![CDATA[mawa: Подскажите пожалуйста кто сталкивался, если необходимо шифрование алгоритмом AES с помощью CryptoAPI, где именно нужно указывать, что шифрование будет именно этим алгоритмом (необходимо определенный криптопровайдер или определенный тип?) <br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">CryptAcquireContext(@hProv, nil, nil, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)</div></ol></div></div></div></div><br>
Заранее очень благодарен&#33;]]></description>
        <author>mawa</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      </channel>
      </rss>
	