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;
}


Источник — «http://ru.wikipedia.org/wiki/TEA»
На других языках