/ / メモ
2009-02-07

[BK94] を読む必要がありそう。

preimage のところで 16bit では無く、 14bit を推測する理由がわかった。
最終的に出力されるのに関係するのが、key2 の 16bit で、
その内、 0 .. 1 bit が固定されているため、
残りの 2 .. 15 bit を推測する。

最終的に出力される s になる 14bit は 64 種類
256x64 のテーブルを作成できる。

ushort[64][256] preimage;
void preimage_init()
{
    ushort temp;
    ubyte s;
    for(int i;i < 256;i++)
    {
        for(int j;j < 64;j++)
        {
            temp = i << 2 | j << 10 | 3;
            s = ((temp * (temp ^ 1)) >> 8) & 0xFF;
            preimage[s][j] = i << 2 | j << 10;
        }
    }
}

トラックバック http://mikanya.dip.jp/memo/2009-02-07-1