in the IDEA algorithm, the multiplication function has a special "condition" of a sort: Multiplication modulo 2^16+1, where the all-zero word (0x0000) is interpreted as 2^16. i dont get it. when i put that into my program, everything after the first part of the first output is wrong. what should i do? IDEA works with groups of 16 bits/4 hex chars, but having 2^16 as a possibility allows for a 17th bit to be introduced that can't be xored out

from http://www.ussrback.com/crypto/libraries/idea/idea-algorithm.txt

i think this is the part where the 0s become 2^16

can someone translate this into words?

```
u_int16 mul(u_int16 x, u_int16 y)
{
u_int32 p=x*y;
if (p == 0)
x = 65537-x-y;
else {
x = p >> 16;
y = p;
x = y-x;
if (y < x) x += 65537;
}
return x;
}
```

Visit Calccrypto for info on crypto

KC2ZOF