|
||||
Меню:
Главная
Форум
Литература: Программирование и ремонт Импульсные блоки питания Неисправности и замена Радиоэлектронная аппаратура Микросхема в ТА Рубрикатор ТА Кабельные линии Обмотки и изоляция Радиоаппаратура Гибкие диски часть 2 часть 3 часть 4 часть 5 Ремонт компьютера часть 2 Аналитика: Монтаж Справочник Электроника Мощные высокочастотные транзисторы 200 микросхем Полупроводники ч.1 Часть 2 Алгоритмические проблемы 500 микросхем 500 микросхем Сортировка и поиск Монады Передача сигнала Электроника Прием сигнала Телевидиние Проектирование Эвм Оптимизация Автомобильная электроника Поляковтрансиверы Форт Тензодатчик Силовые полевые транзисторы Распределение частот Резисторные и термопарные Оберон Открытые системы шифрования Удк |
[201] control = threshold(c->r1,c->r2,c->r3); c->r1 = clock r1(control,c->r1); c->r2 = clock r2(control,c->r2); c->r3 = clock r3(control,c->r3); return( (c->r1Ac->r2Ac->r3)&1); /* Encrypts a buffer of len bytes. */ void a5 encrypt(a5 ctx *c, char *data, int len){ int i,j; char t; for(i=0;i<len;i++){ for(j=0;j<8;j++) t = t<<1 a5 step(c); data[i]A=t; void a5 decrypt(a5 ctx *c, char *data, int len){ a5 encrypt(c,data,len); void main(void){ a5 ctx c; char data[100]; char key[] = {1,2,3,4,5,6,7,8}; int i,flag; for(i=0;i<100;i++) data[i] = i; a5 key(&c,key); a5 encrypt(&c,data,100); a5 key(&c,key); a5 decrypt(&c,data,1); a5 decrypt(&c,data+1,99); flag = 0; for(i=0;i<100;i++) if(data[i]!=i)flag = 1; if(flag)printf("Decrypt failed\n"); else printf("Decrypt succeeded\n"); #undef SEAL DEBUG #define ALG OK 0 #define ALG NOTOK 1 #define WORDS PER SEAL CALL 1024 typedef struct { unsigned long t[520]; /* 512 rounded up to a multiple of 5 + 5*/ unsigned long s[265]; /* 256 rounded up to a multiple of 5 + 5*/ unsigned long r[20]; /* 16 rounded up to multiple of 5 */ unsigned long counter; /* 32-bit synch value. */ unsigned long ks buf[WORDS PER SEAL CALL]; int ks pos; } seal ctx; #defineROT2(x) (((x) >> 2) ((x) << 30)) #defineROT9(x) (((x) >> 9) ((x) << 23)) #defineROT8(x) (((x) >> 8) ((x) << 24)) #defineROT16(x) (((x) >> 16) ((x) << 16)) #defineROT24(x) (((x) >> 24) ((x) << 8)) #defineROT27(x) (((x) >> 27) ((x) << 5)) #defineWORD(cp) ((cp[0] << 24)(cp[1] << 16)(cp[2] << 8)(cp[3])) #defineF1(x,y,z)(((x) & (y)) ((~(x)) & (z))) #defineF2(x,y,z)((x)A(y)A(z)) #defineF3(x,y,z)(((x) & (y)) ((x) & (z)) ((y) & (z))) #defineF4(x,y,z)((x)A(y)A(z)) int g(in, i, h) unsigned char *in; int i; unsigned long *h; unsigned long h0; unsigned long h1; unsigned long h2; unsigned long h3; unsigned long h4; unsigned long a; unsigned long b; unsigned long c; unsigned long d; unsigned long e; unsigned char *kp; unsigned long w[80]; unsigned long temp; kp = in; h0 = WORD(kp);kp += 4; h1 = WORD(kp);kp += 4; h2 = WORD(kp);kp += 4; h3 = WORD(kp);kp += 4; h4 = WORD(kp);kp += 4; w[0] = i; for (i=1;i<16;i++) w[i] = 0; for (i=16;i<80;i++) w[i] = w[i-3]Aw[i-8]Aw[i-14]Aw[i-16]; a = h0; b = h1; c = h2; d = h3; e = h4; for (i=0;i<20;i++) { temp = ROT27(a) + F1(b, c, d) + e + w[i] + 0x5a827999; e = d; d = c; c = ROT2(b); b = a; a = temp; for (i=20;i<40;i++) { temp = ROT27(a) + F2(b, c, d) + e + w[i] + 0x6ed9eba1; e = d; d = c; c = ROT2(b); b = a; a = temp; for (i=40;i<60;i++) { temp = ROT27(a) + F3(b, c, d) + e + w[i] + 0x8f1bbcdc; e = d; d = c; c = ROT2(b); b = a; a = temp; for (i=60;i<80;i++) { temp = ROT27(a) + F4(b, c, d) + e + w[i] + 0xca62c1d6; e = d; d = c; c = ROT2(b); b = a; a = temp; h[0] = h0+a; h[1] = h1+b; h[2] = h2+c; h[3] = h3+d; h[4] = h4+e; return (ALG OK); unsigned long gamma(a, i) unsigned char *a; int i; unsigned long h[5]; (void) g(a, i/5, h); return h[i % 5]; int seal init(seal ctx *result, unsigned char *key) unsigned long h[5]; for (i=0;i<510;i+=5) g(key, i/5, &(result->t[i])); /* horrible special case for the end */ g(key, 510/5, h); for (i=510;i<512;i++) result->t[i] = h[i-510]; /* 0x1000 mod 5 is +1, so have horrible special case for the start */ g(key, (-1+0x1000)/5, h); for (i=0;i<4;i++) result->s[i] = h[i+1]; for (i=4;i<254;i+=5) |
Среды: Smalltalk80 MicroCap Local bus Bios Pci 12С ML Микроконтроллеры: Atmel Intel Holtek AVR MSP430 Microchip Книги: Емкостный датчик 500 схем для радиолюбителей часть 2 (4) Структура компьютерных программ Автоматическая коммутация Кондиционирование и вентиляция Ошибки при монтаже Схемы звуковоспроизведения Дроссели для питания Блоки питания Детекторы перемещения Теория электропривода Адаптивное управление Измерение параметров Печатная плата pcad pcb Физика цвета Управлении софтверными проектами Математический аппарат Битовые строки Микроконтроллер nios Команды управления выполнением программы Перехода от ahdl к vhdl Холодный спай Усилители hi-fi Электронные часы Сердечники из распылённого железа Анализ алгоритмов 8-разрядные КМОП Классификация МПК История Устройства автоматики Системы и сети Частотность Справочник микросхем Вторичного электропитания Типы видеомониторов Радиобиблиотека Электронные системы Бесконтекстный язык Управление техническими системами Монтаж печатных плат Работа с коммуникациями Создание библиотечного компонента Нейрокомпьютерная техника Parser Пи-регулятор ч.1 ПИ-регулятор ч.2 Обработка списков Интегральные схемы Шина ISAВ Шина PCI Прикладная криптография Нетематическое: Взрывной автогидролиз Нечеткая логика Бытовые установки (укр) Автоматизация проектирования Сбор и защита Дискретная математика Kb радиостанция Энергетика Ретро: Прием в автомобиле Управление шаговым двигателем Магнитная запись Ремонт микроволновки Дискретные системы часть 2 | ||