реклама на сайте
подробности

 
 
> Алгоритм шифрования, где найти реализацию?
Ivan Kuznetzov
сообщение Mar 4 2010, 15:44
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Подскажите пожалуйста алгоритм шифрования/дешифрования потоковых данных. (есть массив из n байт, его надо зашифровать и расшифровывать на приеме, зная ключ), смотрел в сторону xxtea, работает только с long.
может тупо биты в байте переставлять, наподобие DES ? rolleyes.gif

P.S.
может у кого есть xxtea, который бы с потоком работал?


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Ivan Kuznetzov
сообщение Mar 5 2010, 06:53
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Нашел тут простую реализацию XXTEA. уточню, код будет работать в меге32.

в описании алгоритма указано: at least two words (64 bits)

Код
void xxtea_crypt(unsigned long *v)
{
unsigned long long  q=40;
unsigned long long z=v[1], y=v[0], sum=0, e;

while ( q-- > 0 )
{
  sum += DELTA;
  e = sum >> 2&3;
  y = v[1];
  z = v[0]+= ( (((z>>9)^(y<<2))+((y>>3)^(z<<6)))^((sum^y)+(key[e]^z)) );
  y = v[0];
  z = v[1] += ( (((z>>9)^(y<<2))+((y>>3)^(z<<6)))^((sum^y)+(key[1^e]^z)) );
    }

}

Код
void xxtea_decrypt(unsigned long *v)
{
long  q=40;
long z=v[1], y=v[0], e, sum = q*DELTA;

while (sum != 0)
{
   e = sum>> 2&3;
   z = v[0];
   y = v[1] -= ( (((z>>9)^(y<<2))+((y>>3)^(z<<6)))^((sum^y)+(key[1^e]^z)) );
   z = v[1];
   y = v[0] -= ( (((z>>9)^(y<<2))+((y>>3)^(z<<6)))^((sum^y)+(key[e]^z)) );
   sum -= DELTA;
     }

}


как теперь туда байтовый массив запихать? Делал преобразование байт с помощью этой функции:

Код
ULONG GetInt32( UCHAR *pBytes )
{
return (ULONG)(*(pBytes + 3) << 24 | *(pBytes + 2) << 16 | *(pBytes + 1) << 8 | *pBytes);
}


IAR ругается что shift count is too large

P.S.
Админам: тема касается AVR


Сообщение отредактировал Ivan Kuznetzov - Mar 5 2010, 06:59


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Mar 5 2010, 07:40
Сообщение #3


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(Ivan Kuznetzov @ Mar 5 2010, 09:53) *
IAR ругается что shift count is too large

А просто взять байты и переложить в нужное место нельзя чтоли?
Ну или там с юнионами поизвращаться
Без всяких сдвигов
ИАР, кстати, мог бы и сам догадаться rolleyes.gif


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 11:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.01371 секунд с 7
ELECTRONIX ©2004-2016