<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум Guardant &mdash; кодировка значений типа int алгоритмом AES128]]></title>
	<link rel="self" href="https://forum.guardant.ru/feed/atom/topic/125" />
	<updated>2011-11-10T09:57:13Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.guardant.ru/topic/125/</id>
		<entry>
			<title type="html"><![CDATA[Re: кодировка значений типа int алгоритмом AES128]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/568/#p568" />
			<content type="html"><![CDATA[<p>Здравствуйте, MaximT.</p><p>На всякий случай ниже дублирую ранее отправленный Вам по почте ответ:</p><p><em>Для того чтобы закодировать например целочисленную строку данных необходимо перед шифрованием помещать их в буфер соответствующего типа.</em></p><p><em>Что касается нашего примера из комплекта разработчика, то действительно наблюдается описанная Вами проблема, это является следствием не совсем корректного алгоритма формирования вектора инициализации представленного в данном примере (вектор формируется на основе данных возвращаемых стандартной WinAPI функцией time и в результате иногда могут не совпадать вектора, используемые для шифрования и дешифровки).<br />Если для примера использовать статически заданный вектор (или какой либо иной корректный алгоритм его формирования) то данные всегда будут дешифрованы, верно.</em></p>]]></content>
			<author>
				<name><![CDATA[Антон Тихиенко]]></name>
				<uri>https://forum.guardant.ru/user/31/</uri>
			</author>
			<updated>2011-11-10T09:57:13Z</updated>
			<id>https://forum.guardant.ru/post/568/#p568</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[кодировка значений типа int алгоритмом AES128]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/559/#p559" />
			<content type="html"><![CDATA[<p>Здравствуйте, </p><p>я недавно начал работать с Вашими ключами и у меня такой вопрос: стандартная структура из примера : <br />в уроках по программированию ключей с помощью алгоритма AES128 (урок 3.2) представлен момент когда мы кодируем char символ.<br />А как я могу закодировать полученное с клавиатуры (или откуда-то еще) значение типа int?</p><br /><p>Кстати, там, в примере, один момент: мы кодируем не то что получили с клавиатуры, а другой массив со значением полученным с клавиатуры и вставленным в середину защищаемых данных:<br /></p><div class="codebox"><pre><code>szMessage[MESSAGE_SIZE / 2] = *q.begin();
// Устанавливаем значение вектора инициализации
memset(pIV, 0, GrdARS_AES128);
time((time_t*)pIV);
if(pIV[0] % 2)
{
    pIV[0]--;
}
// Шифруем массив при помощи алгоритма AES128 в режиме OFB
nRet = GrdDongle.CryptEx(0x0002, sizeof(szMessage), szMessage,
    GrdAM_OFB | GrdAM_Encode, sizeof(pIV), pIV);
if (nRet)
{
        cout &lt;&lt; &quot;GrdCryptEx() encode faild!&quot;;
}</code></pre></div><p>но когда я пытаюсь получить этот же расшифрованный и вытянуть из него то что мы вставили в середину массива<br /></p><div class="codebox"><pre><code>nRet = GrdDongle.CryptEx(0x0002, sizeof(szMessage), szMessage, 
    GrdAM_OFB | GrdAM_Decode, sizeof(pIV), pIV);
if (nRet)
{
    cout &lt;&lt; &quot;GrdCryptEx() decode failed!&quot; &lt;&lt; endl;
}
else
{
*q.begin() = szMessage[MESSAGE_SIZE/2];
.......</code></pre></div><p>я не всегда получаю то что мы приняли с клавиатуры, как с этим бороться?</p>]]></content>
			<author>
				<name><![CDATA[MaximT]]></name>
				<uri>https://forum.guardant.ru/user/126/</uri>
			</author>
			<updated>2011-11-03T14:32:43Z</updated>
			<id>https://forum.guardant.ru/post/559/#p559</id>
		</entry>
</feed>
