我正在完成Stroustrup的“编程:使用C++的原则和实践”中的练习。在第25章中,他介绍了微型加密算法(TEA)。他和网站上的一些文件声称,它没有被破坏,考虑到代码是多么的短,这似乎“太好了,不可能是真的!”
注意,我必须将long变量更改为int变量,因为位移位设计为在具有sizeof(var) = 4的系统上实现。
OS实现的长度为8字节类型,因此如果不进行此更改,Stroustrup的代码将无法工作。
有人能推荐其他一些琐碎的改进措施,使TEA在OS上运行更高效和/或更好的安全性吗?
void encipher(
const unsigned int* const v,
unsigned int* const w,
const unsigned int* const k
)
{
unsigned int y = v[0];
unsigned int z = v[1];
unsigned int sum = 0;
unsigned int delta = 0x9E3779B9;
unsigned int n = 32;
while(n-- > 0) {
y += (z << 4 ^ z >> 5) + z ^ sum + k[sum & 3];
sum += delta;
z += (y << 4 ^ y >> 5) + y ^ sum + k[sum>>11 & 3];
}
w[0]=y;
w[1]=z;
}发布于 2014-03-16 07:11:49
维基百科 (来吧,伙计,谷歌!)
茶有几个弱点。最值得注意的是,它存在相同的密钥--每个密钥相当于另外三个密钥,这意味着有效密钥大小仅为126位。因此,TEA作为加密哈希函数尤其糟糕。这一弱点导致了一种攻击微软Xbox游戏控制台的方法,在Xbox游戏机中,密码被用作哈希函数。TEA也容易受到相关密钥攻击的影响,这种攻击需要在相关密钥对下选择2^23个明文,时间复杂度为2^32。针对这些缺点,设计了XTEA密码。
https://stackoverflow.com/questions/22433734
复制相似问题