实现基于IDEA算法的加密工具(5)

3/23/2008来源:软件工程人气:5630


3.4注重事项

由于在IDEA中采用了乘法运算,这就要考虑到两个乘数是否为0 的情况,假如两个乘数都为0,那么乘法运算结果为0,假如仅有一个乘数为0,那么用65536替换那个为0的乘数,取乘法运算结果的低16位作为输出结果.

INT32 MUL( ULONG16 a, ULONG16 b)/*(a*b)*/

{

ULONG32 p;

if ( a == 0 && b == 0 )

{

p = 0 ;

}

else if ( a == 0 )

{

p = 65536*(ULONG32)b;

}

else if ( b == 0)

{

p = 65536*(ULONG32)a;

}

else

{

p = (ULONG32)a*(ULONG32)b;

}

return (ULONG16 )(p%65537);

}