尝试实现Present cipher。我有功能:
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;
}
如果您知道更好的方法,请在评论中发表回答。感谢。