一,strcat的使用方法(在攻防世界中刷题时遇到的)
二,壳(做题遇到过但是一直不是很理解,今天查了一下)
壳是一种软件保护技术,能够防止程序被轻易地分析和修改。
总而言之,感觉壳是一个非常重要的东西,类似于保护罩。
三,TEA算法
TEA算法是一种分组密码算法,将明文数据分割成固定长度的分组进行加密,分组长度为64位,即八个字节。其密钥长度为128位。
具体加密方式:
1. 初始化
密钥准备:选择一个128位的密钥,并将其分为四个32位的子密钥 k0,k1,k2,k3 。
明文准备:将64位的明文分为两个32位的部分,记为 v0 和 v1 。
初始化累加变量:设置一个累加变量 sum,初始值为0。
迭代次数:通常设置为32轮。
2. 加密过程
加密过程通过32轮迭代完成,每轮迭代包括以下步骤:
每轮迭代
更新累加变量:
(对上述式子的解释:这个式子的作用是将 sum 增加一个固定的值 delta,并通过按位与操作确保结果不会超出32位整数的范围。)
其中,δ 是一个固定的常数,值为 0x9E3779B9。
更新 v0 和 v1:
更新 v0:
(解释:加圈的意思是按位异或运算,十六进制前的符号是按位与运算,这个步骤的作用是更新 v10
的值,通过一系列的位移、加法、异或和按位与操作,结合子密钥和累加变量,从而实现解密过程中的一轮操作。)
更新 v1:
(解释:同上)
这些操作包括加法、异或、左移和右移。
重复上述步骤,直到完成32轮迭代。
3. 输出密文
经过32轮迭代后,v0 和 v1 的值即为加密后的密文。
4. 解密过程
解密过程与加密过程类似,但迭代顺序相反,累加变量 sum 递减。具体步骤如下:
初始化:输入密文 v0,v1 和密钥 k0,k1,k2,k3,设置 sum 为 δ×32 。
迭代解密:
每轮迭代中:
重复上述步骤,直到完成32轮迭代。
输出明文:经过32轮迭代后,v0 和 v1 的值即为解密后的明文。