【发布时间】:2011-02-26 17:26:41
【问题描述】:
AES 算法中有一个函数,在伽罗瓦域中将一个字节乘以 2。
这是网站中给出的功能
private static byte gfmultby02(byte b)
{
if (b < 0x80)
return (byte)(int)(b <<1);
else
return (byte)( (int)(b << 1) ^ (int)(0x1b) );
}
这是我写的函数。
private static byte MulGF2(byte x)
{
if (x < 0x80)
return (byte)(x << 1);
else
{
return (byte)((x << 1) ^ 0x1b);
}
}
我需要知道的是,给定任何字节,这是否会以相同的方式执行。实际上,我担心额外转换为 int,然后再转换为 byte。到目前为止,我已经测试过了,看起来还不错。在极少数情况下,额外转换为 int 然后转换为 byte 会有所不同吗?
【问题讨论】: