TEA加密算法

这个加密嘎嘎简单但是又被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值,进行结构加密
算法原理
- 初始化 这个的初始化起始也就是拿到两个内容,然后把常数初始化上
- 进行计算 标准算法是走了32次循环,魔改的可能会走更多或者更少,各位自己到时候hook
先让sum等于常数
第一块数据左移4位,然后加上第零个密钥然后和第一块数据加上常数进行异或,然后在异或上第一块数据右移5位然后加上第一块密钥
第零块数据左移4位,然后加上第2个密钥然后和第0块数据加上常数进行异或,然后在异或上第0块数据右移5位然后加上第3块密钥
以上循环32次,最后再进行归位,后续可以会进行base64或者hex操作,就看出题人怎么做了