В алгоритме 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, а затем снова к байту. Пока я проверил, и это выглядит хорошо. Имеет ли значение дополнительное приведение к int, а затем к байту в редких случаях?