Курсовая работа: Программная реализация алгоритма шифрования DES. Режим ECB
get_bit((unsigned char *)(&inp), 6) << 3;
return S_table[string * 16 + column];
}
//РеализуеталгоритмподстановкиS-блоков
void S_block (unsigned char *dest, unsigned char *src)
{
intS_inp;//6 бит, подающиеся на вход в S-блок
intS_out;//4 бита, получаемые из S-блока
for (int i=0; i<4; ++i) dest[i]=0;
for (int i=0; i<8; ++i)
{
shift_left (src, 6, i);
S_inp=(src[0] >> 2) & 0x3F;
S_out=get_S_substitution(S_inp, table_S_block[i]);
dest[i/2] |= S_out << (((i + 1) % 2) * 4);
}
}
//Сам алгоритм DES. i_key- 64 бита (8 байт) (с битами четности); data- 64 бита
//Алгоритм используется как при шифровании, так и при дешифровании. Ключ при
//дешифровании менять самим. При decode==false- зашифровка, если ==true-
//расшифровка
void DES_algorithm (unsigned char *i_key, unsigned char *data,
bool decode=false)
{
unsigned char key[7]; //Ключбезбитовчетности
unsignedcharLi[4]; //сохраненная левая половина данных
unsignedcharsmall_key[6]; //ключ после перестановки со сжатием
unsignedcharbig_data[6]; //данные после перестановки с расширением
unsignedcharsmall_data[4]; //данные после подстановки с помощью