gpt4 book ai didi

algorithm - TEA 算法的 32 位版本

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:30:13 30 4
gpt4 key购买 nike

我需要一系列随机的唯一字母数字序列号,并决定使用 TEA(微型加密算法),因为它快速、优雅且高效。但是,我只发现 64 位实现会产生太长的数字:32 位数字会更可取。我想使用 32 位版本的 TEA,但不太可能存在。

当然,我的问题是我不知道它是如何工作的——如此复杂的操作序列如何产生可以输入到反向算法以重新获得原始代码的代码。这当然很吸引人,但在这个阶段,我会满足于快速回答而不是所需的见解。

对于那些感兴趣的人,加密/解密算法是:

while(n-->0) {
sum += delta;
y += (z << 4)+a ^ z+sum ^ (z >> 5)+b;
z += (y << 4)+c ^ y+sum ^ (y >> 5)+d;
}

while(n-->0) {
z -= (y << 4)+c ^ y+sum ^ (y >> 5)+d;
y -= (z << 4)+a ^ z+sum ^ (z >> 5)+b;
sum -= delta;
}

我已经写了一个打印出前十个数字的快速 hack,所以它正在工作(如果有人感兴趣,我很乐意发布它 - 60 行),但如果有人可以指出我的 32 位版本或解释我将永远感激其运作的魔力。

最佳答案

在每一轮加密中:

  1. sum+=delta。这可以通过 sum-=delta
  2. 轻松逆转
  3. y+=f(z,sum),即你添加到y的是zsum的函数 而已。由于 zsum 没有改变,这可以通过 sum-=f(z,sum)
  4. 轻松反转
  5. z+=g(y,sum)。您添加到 z 的内容只是 ysum 的函数。由于 ysum 没有变化,这可以通过 z-=g(y,sum)
  6. 轻松反转

这种确保密码可逆的简单方法显然受到许多现代分组密码中使用的 Feistel 结构的启发:https://en.wikipedia.org/wiki/Feistel_cipher

关于algorithm - TEA 算法的 32 位版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41494499/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com