Home  >  Article  >  php教程  >  如何实现PHP的TEA算法

如何实现PHP的TEA算法

WBOY
WBOYOriginal
2016-06-06 19:56:20924browse

算法简单,而且效率高,每次可以操作8个字节的数据,加密解密的KEY为16字节,即包含4个int数据的int型数组,加密轮数应为8的倍数,一般比较常用的轮数为64,32,16,QQ原来就是用TEA16来还原密码的。 TEA算法 核心为: #include stdint.h void encrypt (uint

    算法简单,而且效率高,每次可以操作8个字节的数据,加密解密的KEY为16字节,即包含4个int数据的int型数组,加密轮数应为8的倍数,一般比较常用的轮数为64,32,16,QQ原来就是用TEA16来还原密码的。

    TEA算法

    核心为:

#include

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         sum += delta;
        v0 += ((v1>5) + k1);
        v1 += ((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        v1 -= ((v0>5) + k3);
        v0 -= ((v1>5) + k1);
        sum -= delta;                                  
    }            /* end cycle */

    v[0]=v0; v[1]=v1;
}

[1] [2] [3] [4] [5] 

如何实现PHP的TEA算法

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn