TEA加密算法

TEA加密算法

bg

这个加密嘎嘎简单但是又被CTF使用很广泛,然后还是来讲讲吧,代码没几行

void tea_encrypt(uint32_t v[2], const uint32_t k[4]) {
    uint32_t v0 = v[0], v1 = v[1];
    uint32_t sum = 0;
    const uint32_t delta = 0x9E3779B9; // 一个神奇的常数,黄金比例的倒数

    for (int i = 0; i < 32; i++) { // 32个循环,64轮
        sum += delta;
        v0 += ((v1 << 4) + k[0]) ^ (v1 + sum) ^ ((v1 >> 5) + k[1]);
        v1 += ((v0 << 4) + k[2]) ^ (v0 + sum) ^ ((v0 >> 5) + k[3]);
    }
    v[0] = v0;
    v[1] = v1;
}

确实也就是把需要加密的数据分成两半,然后再传入4个key值,进行结构加密

算法原理

  1. 初始化 这个的初始化起始也就是拿到两个内容,然后把常数初始化上
  2. 进行计算 标准算法是走了32次循环,魔改的可能会走更多或者更少,各位自己到时候hook

先让sum等于常数

第一块数据左移4位,然后加上第零个密钥然后和第一块数据加上常数进行异或,然后在异或上第一块数据右移5位然后加上第一块密钥

第零块数据左移4位,然后加上第2个密钥然后和第0块数据加上常数进行异或,然后在异或上第0块数据右移5位然后加上第3块密钥

以上循环32次,最后再进行归位,后续可以会进行base64或者hex操作,就看出题人怎么做了