tea算法

tea算法

在安全學領域,TEA(Tiny Encryption Algorithm)是一種分組加密算法,它的實現非常簡單,通常只需要很精短的幾行代碼。TEA 算法最初是由劍橋計算機實驗室的 David Wheeler 和 Roger Needham 在 1994 年設計的。

TEA算法使用64位的明文分組和128位的密鑰,它使用Feistel分組加密框架,需要進行 64 輪疊代,儘管作者認為 32 輪已經足夠了。該算法使用了一個神秘常數δ作為倍數,它來源於黃金比率,以保證每一輪加密都不相同。但δ的精確值似乎並不重要,這裡 TEA 把它定義為 δ=「(√5 - 1)231」(也就是程式中的 0×9E3779B9)。

之後 TEA 算法被發現存在缺陷,作為回應,設計者提出了一個 TEA 的升級版本——XTEA(有時也被稱為“tean”)。XTEA 跟 TEA 使用了相同的簡單運算,但它採用了截然不同的順序,為了阻止密鑰表攻擊,四個子密鑰(在加密過程中,原 128 位的密鑰被拆分為 4 個 32 位的子密鑰)採用了一種不太正規的方式進行混合,但速度更慢了。

基本介紹

  • 中文名:tea算法
  • 外文名:Tiny Encryption Algorithm
  • 性質:分組加密算法
  • 時間:1994 年
C語言的Tea算法(原始):
void encrypt(uint32_t*v,uint32_t*k) {    uint32_t v0 = v[0], v1 = v[1], sum = 0, i; /*setup*/    uint32_t delta = 0x9e3779b9; /*akeyscheduleconstant*/    uint32_t k0 = k[0], k1 = k[1], k2 = k[2], k3 = k[3]; /*cachekey*/    for(i=0;i<32;i++) {        /*basiccyclestart*/        sum += delta;        v0 += ((v1 << 4) + k0) ^ (v1 + sum) ^ ((v1 >> 5) + k1);        v1 += ((v0 << 4) + k2) ^ (v0 + sum) ^ ((v0 >> 5) + k3);    } /*endcycle*/    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; /*setup*/    uint32_t delta = 0x9e3779b9; /*akeyscheduleconstant*/    uint32_t k0 = k[0], k1 = k[1], k2 = k[2], k3 = k[3]; /*cachekey*/    for(i = 0; i < 32; i++) {        /*basiccyclestart*/        v1 -= ((v0 << 4) + k2) ^ (v0 + sum) ^ ((v0 >> 5) + k3);        v0 -= ((v1 << 4) + k0) ^ (v1 + sum) ^ ((v1 >> 5) + k1);        sum -= delta;    } /*endcycle*/    v[0] = v0;    v[1] = v1;}

相關詞條

熱門詞條

聯絡我們