加密解密技术系列
tea、xtea、xxtea算法详解
00 分钟
2022-12-14
2024-11-11
type
status
date
slug
summary
tags
category
icon
password

Tea

直接来看代码吧,看不明白下面有详解和注释
有的地方初次看的话,会有很多地方看不懂, 所以下面解释一下
但我们需要知道的东西是 Tea 算法有一个魔数 delta=0x9e3779b9 这个值,是标准 tea 算法的魔数,如果看到这个特征值多半就是 tea 加密
然后我们看到解密算法里面有一个数
sum=0xC6EF3720
这个数是怎么来的呢? 很简单记住一个公式就行 Delta * 加密轮数然后从后面取 8 位 比如这里: delta * 0x20 (32) = 0x13C6EF3720 这里取 8 位的话,就是0xC6EF3720
notion image
然后再解释一下左移和右移 左移多少位就是该值乘以 2 的移位次方 相反右移多少位就是该值除以 2 的移位次方
举例: a<<4 表示 a 乘以 2 的 4 次方 a>>5表示a除以2的5次方 a 移动 x 位表示对 a 进行 2 的 x 次方操作
由于是函数传参用的 eax 寄存器,用来存储 32 位的无符号整数,最大 4 字节,所以多出来的会省去
举个例子:如果是 0x1b2ceed32f,则会看到 0x2ceed32f,在这里先提个醒,下面直接分析加密算法:
加密流程图 图解符号: 方框:相加盒。将指向该盒的变量进行相加 圆圈:异或盒。将指向该盒的变量进行异或 知道了加密,解密就很简单了,直接逆过来就是了
notion image
上面的这是标准的 tea 算法, 然后我们可以进一步魔改如下
这里改变特征值,然后加密算法微调,加了异或而已,就完成了魔改工作

Xtea

一样,上xtea算法代码
这里主要需要说的是 key[sum & 3]key[(sum >> 11) & 3], 建议动调看一下,这里其实就是简单的取出 key 数组的值
Xtea 考的不是很多,我们只需要记住在 tea 算法的基础上,再记住特征,key[sum&3]key[(sum >> 11) & 3 还有轮转数的选择,就可以认出 Xtea算法了
加密流程图: 图解符号: 方框:相加盒。将指向该盒的变量进行相加 圆圈:异或盒。将指向该盒的变量进行异或
notion image

Xxtea

一样上代码
这里说一下,注意注释里面写的特征值,然后可以根据特征值识别 xxtea 算法,然后加密细节强烈建议动调一下,你就会明白原理了,光看代码是没用的
加密流程图: 图解符号: 方框:相加盒。将指向该盒的变量进行相加 圆圈:异或盒。将指向该盒的变量进行异或
notion image

总结

知道加密原理,才能应对任何魔改,只有自己乱改,才能逆向出别人的奇淫技巧魔改,标准的 tea 系列算法现在已经被很多密码工具箱集成了,python 也有一个 tea 系列算法加解密库
不过,再多的工具,不知道原理,只会是成为像 web 手那样满天飞的脚本小子,没错说的就是我这个脚本小子
上一篇
AES和DES加密模式
下一篇
AES加密算法原理