TEA
Материал из Википедии — свободной энциклопедии
| Алгоритм блочного шифрования | |
|---|---|
| Название: | TEA |
| Разработчик: | Дэвид Уилер и Роджер Нидхэм |
| Создан: | 1994 г. |
| Опубликован: | 1994 г. |
| Размер ключа: | 128 бит |
| Размер блока: | 64 бит |
| Число раундов: | 32 |
| Тип: | Сеть Фейстеля |
Tiny Encryption Algorithm (TEA) — блочный алгоритм шифрования типа «Сеть Фейстеля», представленный в 1994 году Дэвидом Уилером(David Wheeler) и Роджером Нидхэмом (Roger Needham).
[править] Реализация
void encrypt (unsigned long* v, unsigned long* k) { unsigned long v0=v[0], v1=v[1], sum=0, i; /* set up */ unsigned long delta=0x9e3779b9; /* a key schedule constant */ unsigned long k0=k[0], k1=k[1], k2=k[2], k3=k[3]; /* cache key */ for (i=0; i < 32; i++) { /* basic cycle start */ sum += delta; v0 += ((v1<<4) + k0) ^ (v1 + sum) ^ ((v1>>5) + k1); v1 += ((v0<<4) + k2) ^ (v0 + sum) ^ ((v0>>5) + k3); /* end cycle */ } v[0]=v0; v[1]=v1; } void decrypt (unsigned long* v, unsigned long* k) { unsigned long v0=v[0], v1=v[1], sum=0xC6EF3720, i; /* set up */ unsigned long delta=0x9e3779b9; /* a key schedule constant */ unsigned long k0=k[0], k1=k[1], k2=k[2], k3=k[3]; /* cache key */ for (i=0; i<32; i++) { /* basic cycle start */ v1 -= ((v0<<4) + k2) ^ (v0 + sum) ^ ((v0>>5) + k3); v0 -= ((v1<<4) + k0) ^ (v1 + sum) ^ ((v1>>5) + k1); sum -= delta; /* end cycle */ } v[0]=v0; v[1]=v1; }

