Разработать функции setBit и getBit. Проверить их работоспособность.
void setBit(unsigned char byteArray[], unsigned long bitNumber, unsigned char bit);Функция устанавливает (bit!=0) или сбрасывает (bit==0) бит в массиве byteArray в позиции bitNumber. Нумерация битов - от младшего к старшему (byteArray[0] содержит биты с номерами от 0 до 7, byteArray[1] - от 8 до 15 и т.д.)
unsigned char getBit(unsigned char byteArray[], unsigned long bitNumber);Функция возвращает 1, если в массиве byteArray в позиции bitNumber бит установлен. Возвращает 0 в противном случае. Нумерация битов - от младшего к старшему (byteArray[0] содержит биты с номерами от 0 до 7, byteArray[1] - от 8 до 15 и т.д.)
Разработать функцию шифрования-дешифрования строки шифром Вернама по модулю 2 (см., например Современная криптография: теория и практика. : Пер. с англ. — М. : Издательский дом "Вильямс", 2005. ). Проверить ее работоспособность.
void cipherVernam(char source[], const char key[]);Алфавит текста и ключа ограничить 32 знаками со следующими кодами:
'A':0, 'B':1, 'C':2, ... 'Z':25 ' ':26 '.':27 ',':28 '-':29 '!':30 '?':31source - строка текста, которую следует зашифровать. Результат шифрования размещается в этой-же строке.