首页 > 编程语言 >算法识别(一)--TEA及其魔改

算法识别(一)--TEA及其魔改

时间:2024-07-23 11:55:51浏览次数:7  
标签:魔改 -- TEA unsigned v0 v1 int delta uint32

0x01 算法概要

TEA(tiny encryption algorithm),属于分组算法,每次操作64位数,分成2个4字节无符号整数(unsigned int),密钥128位,为4个4字节无符号整型(unsigned int),delta(unsigned int)一般为0x9e3779b9,进行轮数一般>=32轮.

0x02 算法实现

c实现

#include <cstdint>


unsigned int delta=0x9e3779b9;
using namespace std;
//flag{c0ng3atu1a_ezTEA!!}
void encrypt(uint32_t* v,const uint32_t *k)
{
    unsigned int sum=0;
    uint32_t v0=v[0];
    uint32_t v1=v[1];
    for (int i=0;i<32;i++) {
        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;
}

void decrypt(uint32_t* v,const uint32_t *k)
{
    uint32_t v1,v0;
    uint32_t delta=0x9e3779b9;
    uint32_t sum=delta*32;
    v0=v[0], v1=v[1];
    for (int i=31;i>=0;i--) {
        sum-=delta;
        v1-=((v0<<=4)+k[2])^(v0+sum)^((v0>>5)+k[3]);
        v0=((v1<<=4)+k[0])^(v1+sum)^((v1>>5)+k[1]);
    }
    v[0]=v0,v[1]=v1;
    /*
     * 关于输出,printf("%x")将整个数组输出,然后进行16进制转换字符串
     */
}

0x03 魔改部分

1.对delta进行修改

可能将delta的值进行其他操作

2.修改加密轮数

加密轮数可能大于32轮

3.对密钥进行修改

每次加密时可能对密钥进行一定的修改

0x04 关于衍生

在TEA算法的基础上又进行了派生,如XTEA以及XXTEA,XTEA的加密逻辑仍然大体相同,只是在进行加密操作时运算进行了改动,XXTEA则改动较大,需要获取明文长度,通过明文长度来控制轮数,同时有新的变量控制数组下标

标签:魔改,--,TEA,unsigned,v0,v1,int,delta,uint32
From: https://www.cnblogs.com/cia1lo/p/18317970

相关文章

  • RK3568 gps N303-5Q
    修改目录kernel-5.10device/rockchip/rk356x/frameworks/basesystem/coredts配置kernel-5.10&uart4{       status="okay";       pinctrl-0=<&uart4m0_xfer>;+      gnss{+               //compatible="u-blox,ne......
  • 简单讲解一下STM32的启动过程
    启动模式首先我们先看一下启动模式第一个为内部FLASH启动方式   当芯片上电后采样到BOOT0引脚为低电平时,0x00000000和0x00000004地址被映射到内部FLASH的首地址0x08000000和0x08000004。因此,内核离开复位状态后,读取内部FLASH117的......
  • 魔改Transformer!9种提速又提效的模型优化方案
    Transformer目前已经成为人工智能领域的主流模型,应用非常广泛。然而Transformer中注意力机制计算代价较高,随着序列长度的增加,这个计算量还会持续上升。为了解决这个问题,业内出现了许多Transformer的魔改工作,以优化Transformer的运行效率。我这次就给大家分享9篇对Transform......
  • 工资类别(姓名、工作时间、工资、总计)
    细节是这样的,我需要上这门课。它只说要上一门课,工资单。我应该只做规定的事情。工资类工资单类包含以下属性:包含许多员工的员工数据,每个员工由以下内容组成:•员工姓名:字符串•工作时间:浮动•工资标准:浮动•工资总额:浮动Payroll类具有以下方法:读取数据()读取......
  • 一文看懂AI的 Transformer 架构!
    1AI的转换器是啥?转换器,一种将输入序列转换或更改为输出序列的神经网络架构。它们通过学习上下文和跟踪序列组件之间的关系来做到这一点。例如,请考虑以下输入序列:“天空是什么颜色的?”转换器模型会使用内部数学表示法来识别颜色、天空和蓝色这三个词之间的相关性和关系。......
  • 快速学习一个算法,Transformer
    今天给大家介绍一个强大的算法模型,TransformerTransformer模型是由Vaswani等人在2017年提出的一种用于自然语言处理的深度学习模型,特别擅长于处理序列到序列的任务,如机器翻译、文本生成等。今天,我们主要从编码的角度来进行说明。Transformer模型架构Transformer......
  • IDEA 登陆Gitee账户登录不上,显示无效的登录回调地址解决办法
    原因:未知解决办法:改用令牌登录,1和2处都填同一个,令牌在gitee设置中获取复制好令牌,去idea登录即可,特此记录。......
  • VS2022无法启动程序
    win11专业版23h2在安装VS2022时会遇到以下问题以下就是正确的操作方法1.首先打开VS022的install 2.点击修改 3.选择单个组件 4.找到Windows11SDK(10.0.26100.0)安装好之后就可以正常的编写c/c++代码了 ......
  • POLIR-Dialectics-lumination VS Abyss-Nietzsche's "Abyss and Mental Projection" a
    Nietzschesaid:Whenyoulookintoanabyss,theabysslookintoyou.Actually,thereisacombinationof"psychologicalprojection"and"infiniteloopofconflict"?KeyPoint:0.The"StatueofLiberty"luminatingtheworld......
  • 矩阵引入矩阵的引入来源于线性方程组,例如:\[\begin{cases}7x_1+8x_2+9x_3=13\\4x_1+5x_2+6x_3=12\\x_1+2x_2+3x_3=11\end{cases}\]写成矩阵的形式:\[\begin{pmatrix}7&8&9\\4&5&6\\1&2&3\end{pmatrix}\times\be......