当前位置: 首页 > news >正文

织梦网站被做跳转天眼通公司查询在线

织梦网站被做跳转,天眼通公司查询在线,网络设计课程总结,wordpress插件 登录TEA TEA#xff08;Tiny Encryption Algorithm#xff0c;轻量加密算法#xff09; 是一种简单、快速的对称加密算法。它是一个分组加密算法#xff0c;通常用于加密 64 位的数据块#xff0c;并使用 128 位的密钥。TEA 是一种“费斯妥结构”#xff08;Feistel structu…TEA TEATiny Encryption Algorithm轻量加密算法 是一种简单、快速的对称加密算法。它是一个分组加密算法通常用于加密 64 位的数据块并使用 128 位的密钥。TEA 是一种“费斯妥结构”Feistel structure算法具有 64 轮的加密过程设计目标是简洁和高效。 TEA 加密算法原理 分组加密TEA 将明文分成 64 位8 字节块每个块分为两个 32 位部分v0 和 v1。密钥结构TEA 使用 128 位密钥分成 4 个 32 位的部分k[0], k[1], k[2], k[3]。加密轮数TEA 通常运行 64 轮的加密或者在某些实现中使用 32 轮。加密过程通过对两个 32 位部分v0 和 v1的混合和异或操作来增加密文的复杂性。 TEA 通过多轮迭代利用简单的移位、加法和异或运算来实现数据加密。 标准 TEA 加密的 C 代码 以下是 TEA 的标准加密实现使用 C 语言编写 // TEA 加密函数 void tea_encrypt(uint32_t v[2], const uint32_t k[4]) {// 初始化v0和v1为输入数据的两个32位块uint32_t v0 v[0], v1 v[1], sum 0;// 常量delta用于累加器的固定值uint32_t delta 0x9E3779B9;// 进行32轮加密操作for (uint32_t i 0; i 32; i) {// 累加器sum每轮累加delta值sum delta;// 对v0进行加密操作涉及左移、右移、XOR和密钥k[0]和k[1]v0 ((v1 4) k[0]) ^ (v1 sum) ^ ((v1 5) k[1]);// 对v1进行加密操作类似v0涉及k[2]和k[3]v1 ((v0 4) k[2]) ^ (v0 sum) ^ ((v0 5) k[3]);}// 将加密后的v0和v1保存回输入数组v[0] v0;v[1] v1; }// TEA 解密函数 void tea_decrypt(uint32_t v[2], const uint32_t k[4]) {// 初始化v0和v1为输入数据的两个32位块uint32_t v0 v[0], v1 v[1];// 初始化累加器sum为最大值用于解密过程uint32_t sum 0xC6EF3720;// 常量delta用于累加器的固定值uint32_t delta 0x9E3779B9;// 进行32轮解密操作for (uint32_t i 0; i 32; i) {// 对v1进行解密操作与加密过程相反v1 - ((v0 4) k[2]) ^ (v0 sum) ^ ((v0 5) k[3]);// 对v0进行解密操作与加密过程相反v0 - ((v1 4) k[0]) ^ (v1 sum) ^ ((v1 5) k[1]);// 累加器减少delta值sum - delta;}// 将解密后的v0和v1保存回输入数组v[0] v0;v[1] v1; }代码解析 输入参数 v 是一个包含两个 32 位整数的数组代表 64 位数据块的两个部分v0 和 v1。k 是一个包含四个 32 位整数的数组代表 128 位密钥的四个部分k[0] 到 k[3]。 Delta 常量 delta 0x9E3779B9它是黄金分割比的一个近似值用于混合密钥和数据块。 加密过程 初始时sum 置为 0。sum 是一个累加器每轮加密时增加 delta以确保每轮混合不同的密钥部分。每轮加密时v0 和 v1 通过移位、加法和异或操作相互混合并与密钥的不同部分组合。 解密过程 初始时sum 被设定为 32 轮加密时的最终值即 0xC6EF3720。解密过程是加密过程的逆过程逐步减去 delta并通过相同的移位和异或操作还原原始的明文。 特征 1. 双32位分组操作 TEA 处理的是 64 位数据块分为两个 32 位整数 v0 和 v1。因此在伪代码中你可能会看到两个主要变量通常是 32 位整数分别对应于 TEA 加密中的 v0 和 v1。 伪代码中的特征可能类似如下 v0 data[0]; v1 data[1];2. 四个32位密钥 TEA 使用 128 位密钥分成四个 32 位的部分 k[0], k[1], k[2], k[3]。如果在伪代码中看到四个整数数组元素反复用于加密过程则很可能是 TEA 的密钥部分。 uint32_t k[4] { key1, key2, key3, key4 };3. 多轮循环典型为32轮或64轮 TEA 的加密过程通常有 32 或 64 轮每轮使用固定的 delta 值累加到 sum 变量中通常循环结构会类似于如下形式 sum 0; for (i 0; i 32; i) { // 32轮循环sum delta;v0 复杂的表达式;v1 复杂的表达式; }其中 delta 是常量 0x9E3779B9在伪代码中可以直接看到这个值 delta 0x9E3779B9;4. 移位和异或操作 TEA 的核心是对 v0 和 v1 进行移位、加法和异或操作。通过反编译的伪代码中应该可以看到 , , ^, 等符号交替出现 v0 ((v1 4) k[0]) ^ (v1 sum) ^ ((v1 5) k[1]); v1 ((v0 4) k[2]) ^ (v0 sum) ^ ((v0 5) k[3]);这里可以看出明显的移位和异或操作是 TEA 算法的一个标志性特征。 5. Delta 值和累加的 sum 变量 TEA 算法中使用的 delta 值为 0x9E3779B9如果在伪代码中发现这个常量并且被用来在每轮加密中累加到 sum 变量里这也是 TEA 算法的一个强特征 sum delta;解密过程的 sum 初始化为 0xC6EF3720即 0x9E3779B9 * 32然后在每轮中减少 delta 值这也是解密过程的一个特征。 6. 相同的加密和解密逻辑 由于 TEA 是对称加密算法解密过程和加密过程非常相似只是 sum 的初始化和循环方向不同。如果在逆向过程中发现类似的加密和解密逻辑特别是基于 sum 的加减操作这通常是 TEA 解密的迹象。 xTEA XTEAExtended Tiny Encryption Algorithm是 TEA 的改进版本设计用于克服 TEA 的一些已知安全性问题。它保持了 TEA 的简单性和高效性但引入了一些增强的特性以提高其安全性。XTEA 是一种基于分组加密的对称加密算法使用 128 位密钥加密 64 位的数据块。它通过多轮加密将密钥与数据进行复杂混合通常进行 64 轮操作。XTEA 的核心操作包括移位 和 、加法、异或和常数 delta 的使用。 XTEA 加密的主要特点 输入64 位数据通常拆分为两个 32 位块和 128 位密钥4 个 32 位整数。轮数XTEA 进行 64 轮加密比 TEA 的 32 轮更安全。核心操作移位、加法、异或运算通过密钥和常数 delta 的混合执行。delta 常量XTEA 使用的 delta 是一个固定常数取值为 0x9E3779B9源于黄金分割数。 XTEA 加密的 C 代码 XTEA 将 64 位的数据块分为两个 32 位部分 v0 和 v1并依次使用 128 位密钥的四个部分 k[0], k[1], k[2], k[3]。加密过程如下 // XTEA 加密函数 void xtea_encrypt(uint32_t v[2], const uint32_t k[4]) {// 初始化 v0 和 v1 为输入的两个 32 位数据块uint32_t v0 v[0], v1 v[1], sum 0;// 常量 delta用于控制加密过程中的变化uint32_t delta 0x9E3779B9;// XTEA 的加密循环执行 32 轮for (uint32_t i 0; i 32; i) {// 对 v0 进行加密操作使用 v1 和密钥进行复杂变换// 这里使用左移、右移、XOR 运算以及累加器 sum 和密钥 k 的部分值k[sum 3]v0 ((v1 4) ^ (v1 5)) v1 ^ (sum k[sum 3]);// 累加器 sum 增加 delta 值每轮都累加确保变化sum delta;// 对 v1 进行加密操作使用 v0 和密钥进行变换// 同样使用左移、右移、XOR 运算并使用 sum 的另一部分值 (k[(sum 11) 3])v1 ((v0 4) ^ (v0 5)) v0 ^ (sum k[(sum 11) 3]);}// 将加密后的结果保存回原始数组中v[0] v0;v[1] v1; }// XTEA 解密函数 void xtea_decrypt(uint32_t v[2], const uint32_t k[4]) {// 初始化 v0 和 v1 为输入的两个 32 位数据块uint32_t v0 v[0], v1 v[1];// 初始化累加器 sum 为最大值用于解密过程uint32_t sum 0xC6EF3720;// 常量 delta用于控制解密过程中的变化uint32_t delta 0x9E3779B9;// XTEA 的解密循环执行 32 轮与加密过程相反for (uint32_t i 0; i 32; i) {// 对 v1 进行解密操作使用与加密相反的公式v1 - ((v0 4) ^ (v0 5)) v0 ^ (sum k[(sum 11) 3]);// 累加器 sum 减少 delta 值与加密过程相反sum - delta;// 对 v0 进行解密操作使用与加密相反的公式v0 - ((v1 4) ^ (v1 5)) v1 ^ (sum k[sum 3]);}// 将解密后的结果保存回原始数组中v[0] v0;v[1] v1; } 解释 输入参数 v[2]是一个包含两个 32 位整数的数组表示待加密的 64 位数据块。k[4]是一个包含四个 32 位整数的数组表示 128 位的密钥。 初始状态 v0 和 v1 分别代表 64 位数据块的前 32 位和后 32 位。sum 是一个累加变量初始化为 0。delta 是一个固定的常数 0x9E3779B9。 加密过程 XTEA 的加密循环执行 32 次每次循环包括两轮加密操作。在每轮中v0 和 v1 被混合通过移位、异或和加法操作与密钥部分结合。sum 在每轮中累加 delta并用作密钥索引。 轮次操作 v0 更新使用 v1 的左移、右移与当前 sum 和密钥的异或操作进行更新。v1 更新使用 v0 的左移、右移与更新后的 sum 和密钥的异或操作进行更新。这种操作重复 32 次相当于 64 轮加密。 最终结果 加密完成后v0 和 v1 的更新值存储回 v[0] 和 v[1] 中得到加密后的数据。 xxTEA xxTEA 加密算法简介 XXTEA 是 TEA 和 XTEA 的改进版本旨在解决 TEA 和 XTEA 中的弱点。XXTEA 是一种分组加密算法但与 TEA 和 XTEA 不同的是它能够加密长度为任意多个字节的数据而不仅仅是固定长度的数据块。 XXTEA 通过将数据分割成多个 32 位的块然后对这些块进行多轮的混淆和加密。它的核心思路是采用了一种特殊的非线性变换防止简单的模式出现。 xxTEA 加密的 C 代码 // 定义常量 DELTA用于加密和解密操作中的累加器增量 #define DELTA 0x9E3779B9// XXTEA 加密函数 void xxtea_encrypt(uint32_t *v, int n, const uint32_t k[4]) {// 如果数组大小 n 小于 2不进行加密直接返回if (n 2) return;// 初始化 z 和 yz 为数组最后一个元素y 为第一个元素uint32_t z v[n - 1], y v[0], sum 0;// 计算加密轮数XXTEA 的轮数依赖于数据块的个数 nuint32_t rounds 6 52 / n;// 外层循环执行轮数次for (uint32_t i 0; i rounds; i) {// 累加器 sum 增加 DELTA每轮都递增sum DELTA;// 计算 e用于密钥选择uint32_t e (sum 2) 3;// 内层循环处理 n-1 个数据块for (uint32_t p 0; p n - 1; p) {y v[p 1]; // 下一个块的值// 更新当前块的值使用 z 和 y 进行加密操作结合移位、异或和密钥v[p] ((z 5) ^ (y 2)) ((y 3) ^ (z 4)) ^ (sum ^ y) (k[(p 3) ^ e] ^ z);z v[p]; // 更新 z 为当前块}// 最后一个数据块的加密操作y v[0]; // 第一个块的值v[n - 1] ((z 5) ^ (y 2)) ((y 3) ^ (z 4)) ^ (sum ^ y) (k[((n - 1) 3) ^ e] ^ z);z v[n - 1]; // 更新 z 为最后一个块} }// XXTEA 解密函数 void xxtea_decrypt(uint32_t *v, int n, const uint32_t k[4]) {// 如果数组大小 n 小于 2不进行解密直接返回if (n 2) return;// 初始化 z 和 yz 为数组最后一个元素y 为第一个元素uint32_t z v[n - 1], y v[0];// 初始化累加器 sum为加密的总和解密时从最大值开始递减uint32_t sum DELTA * (6 52 / n);// 外层循环执行轮数次与加密时的轮数相同for (uint32_t i 0; i 6 52 / n; i) {// 计算 e用于密钥选择uint32_t e (sum 2) 3;// 内层循环处理 n-1 个数据块从数组末尾往前遍历for (uint32_t p n - 1; p 0; p--) {z v[p - 1]; // 前一个块的值// 更新当前块的值使用 z 和 y 进行解密操作结合移位、异或和密钥v[p] - ((z 5) ^ (y 2)) ((y 3) ^ (z 4)) ^ (sum ^ y) (k[(p 3) ^ e] ^ z);y v[p]; // 更新 y 为当前块}// 第一个数据块的解密操作z v[n - 1]; // 最后一个块的值v[0] - ((z 5) ^ (y 2)) ((y 3) ^ (z 4)) ^ (sum ^ y) (k[(0 3) ^ e] ^ z);y v[0]; // 更新 y 为第一个块// 累加器 sum 减少 DELTA 值与加密时相反sum - DELTA;} }代码说明 函数参数 v 是要加密/解密的数据块类型为 uint32_t*表示数据的多个 32 位块。n 是数据块的个数即数据中包含的 32 位块的数量。k[4] 是 128 位的密钥分成四个 32 位的无符号整数。 加密过程 XXTEA 会对长度为 n 的 v 数组进行多轮加密轮数由 6 52 / n 决定这确保对不同长度的数据轮数适当调整。在每一轮中XXTEA 对每个数据块进行复杂的非线性混合并结合密钥 k 来加密。 解密过程 解密的过程和加密的过程基本对称。唯一不同的是解密时从最大 sum 开始递减并通过与加密时相反的操作还原数据。 特征总结 特征TEAXTEAXXTEA数据块大小固定 64 位2 x 32 位固定 64 位2 x 32 位任意长度的数据块n 个 32 位块轮数固定 32 轮固定 32 轮每轮两步64 步动态轮数6 52 / n变换复杂度简单的移位和 XOR 操作相对复杂的 XOR 和 sum 操作更复杂的移位、XOR、索引操作累加器固定累加 sum 和 deltasum 逐步增加两次累加动态累加 sum并引入动态索引 e加密逻辑操作两个 32 位块双重变换操作左右两次动态遍历每个数据块进行加密 练习 BUUCTF在线评测
http://www.hkea.cn/news/14323337/

相关文章:

  • 定制建站网站网页设计实训总结ppt
  • 手表商城网站建设工商注册官方网站
  • pc手机一体网站新浪博客 wordpress
  • 永州祁阳网站建设宜春企业网站的建设
  • 公司的网站建设规划书宁波怎么优化seo关键词
  • 网站建设域名的购买wordpress网站音乐播放器
  • 太原网站制作公司哪家好小城市门户网站建设方案
  • 进空间的网站吗wordpress本地搬迁
  • 做网站如何快速推广一款产品关于seo网站优化公司
  • 网站编程零基础入门沧州网络公司科技
  • 惠州网站推广排名松滋网站定制
  • 网站建设页面大小wordpress readd
  • 建设信基金管理有限公司网站怎么把网站提交
  • 电子商务视觉设计seo搜索引擎优化薪酬
  • 揭阳专业的网站建设价格网站制作公司官网首页
  • 济源网站建设免费视频app软件哪个好
  • 做视频网站教程网站后台m
  • 大连seo整站优化建众智业公司简介
  • 深圳建站公司服务曰本免费网站
  • 苏州网站建设推荐q479185700霸屏德阳公司网站建设
  • 上海专业网站建设机构wordpress做的好看
  • 建设外贸网站费用机关网站建设方案
  • 网站建设项目选题广东城乡住房建设部网站
  • 常德住房和城乡建设局网站网站优化成本
  • 站长工具平台成都市高新区规划建设局网站
  • 佛山技术支持 骏域网站建设搜索百度一下
  • 推荐网站在线看兄弟们html制作音乐网站
  • 马鞍山网站建设 明达中国进出口贸易官网
  • 湘潭高新区建设局网站外贸公司如何接单
  • 社区做图网站有哪些内容360街景地图怎么看