Пытаюсь внедрить шифр настоящего. У меня есть функция:
static byte[] getRoundKey(byte[] K)
{
return null;
}
Функция должна работать так:
Я думаю, что если я использую var bits = new BitArray(K)
, то я не могу сдвинуть его ни влево, ни вправо. Как я могу сделать битовый сдвиг «истинным образом» с байтовым массивом или с битовым массивом?
P.S.
Я решаю свою проблему таким образом:
static BitArray cyclic_shift(BitArray bits, short shift)
{
/*
Сдвигает битовый массив на указанное смещение вправо (если смещение положительное) или влево (если смещение отрицательное)
*/
BitArray result = new BitArray(bits.Length);
for (byte i = 0; i < bits.Length; i++)
{
result[i] = bits[(bits.Length - (shift - i)) % bits.Length];
}
return result;
}
Если вы знаете лучший способ сделать это, напишите ответ в комментариях. Спасибо.
0x01A4 << 8
? - person SimpleVar   schedule 19.11.2015