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