在OS X上实现微小加密算法

时间:2014-03-16 06:31:45

标签: c++ algorithm encryption

我正在完成Stroustrup的“编程:使用C ++的原理和实践”练习。在第25章中,他介绍了Tiny加密算法(TEA)。他和主持一些论文的网站声称它没有被破坏,并且考虑到代码有多么简短,似乎“真是太好了!”

注意我必须将long变量更改为int变量,因为位移设计用于sizeof(var) = 4

的系统

OS X实现的长度为8字节类型,因此如果没有此更改,Stroustrup的代码将无效。

任何人都可以推荐其他简单实施的改进,以便在OS X上运行TEA,提高效率和/或提高安全性吗?

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;
}

1 个答案:

答案 0 :(得分:1)

Wikipedia(来吧,男人,谷歌!)

  TEA有一些弱点。最值得注意的是,它受到等效密钥的影响 - 每个密钥相当于另外三个密钥,这意味着有效密钥大小仅为126位。结果,TEA作为加密散列函数特别糟糕。这种弱点导致了一种攻击微软Xbox游戏机的方法,其中密码被用作哈希函数。 TEA也容易受到相关密钥攻击的影响,该攻击在相关密钥对下需要2 ^ 23个选择的明文,具有2 ^ 32的时间复杂度。由于这些弱点,设计了XTEA密码。