微型加密算法

在密码学中，微型加密算法（Tiny Encryption Algorithm，TEA）是一种易于描述和执行的块密码，通常只需要很少的代码就可实现。其设计者是剑桥大学计算机实验室的与。这项技术最初于1994年提交给鲁汶的的研讨会上，并在该研讨会上演讲中首次发表。

此项技术开源。

属性
TEA操作处理在两个32位无符号整型上（可能源于一个64位数据），并且使用一个128位的密钥。

版本
TEA的第三个版本XXTEA，发表于1998年，进一步提高了TEA算法的安全性。

参考代码
此处引用C语言中加密和解密的改编例程，由大卫·惠勒同罗杰·尼达姆共同发表：

#include <stdint.h>

void encrypt (uint32_t* v, uint32_t* k) {
    uint32_t v0=v[0], v1=v[1], sum=0, i;           /* set up */
    uint32_t delta=0x9e3779b9;                     /* a key schedule constant */
    uint32_t 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 (uint32_t* v, uint32_t* k) {
    uint32_t v0=v[0], v1=v[1], sum=0xC6EF3720, i;  /* set up */
    uint32_t delta=0x9e3779b9;                     /* a key schedule constant */
    uint32_t 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;
}
请留意这个参考实现对多字节的处理。原稿中并未指定出如何从二进制或者其他内容中派生出这些得到的数字。

参阅
 RC4 - 一种流密码，如同TEA一般, 旨在被设计后易于执行。
 XTEA - 块TEA的继任者的第一个版本
 XXTEA -改进版本块TEA的继任者

参考文献

引用







外部链接

 A Cryptanalysis of the Tiny Encryption Algorithm
 A web page advocating TEA and providing a variety of implementations
 Test vectors for TEA 
 A survey of TEA and XTEA and their cryptanalysis
 JavaScript implementation of XXTEA with Base64
 PHP implementation of XTEA 
 JavaScript implementation of TEA 
 JavaScript and PHP implementations of XTEA (English text) 
 Ruby implementation of XXTEA with Base64
 LGPL Java/J2ME implementation of TEA 
 Visual Basic.NET implementation of TEA
 A Bitsliced implementation of TEA
 AVR ASM implementation 

Category:已攻破的分组密码
Category:费斯妥密码
Category:免费密码
Category:剑桥大学计算机实验室
Category:带有C代码示例的条目