Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef TOOLS_H
- #define TOOLS_H
- #include <iostream>
- #include <vector>
- #include <bitset>
- extern int Table_C[9][4];
- extern int Table_S[9][4];
- extern char Table_logic[9][4];
- class Tools {
- private:
- public:
- /**
- * @brief Циклический сдвиг вправо на N бит
- * @param BYTE Входящий байт данных
- * @param STEP Число на которое нужно произвести сдвиг
- * @return Новый байт с произведённым свигом
- */
- static std::bitset<16> r_shift (std::bitset<16> BITS, unsigned int STEP);
- static bool fullAdder(bool b1, bool b2, bool& carry);
- static std::bitset<16> bitsetAdd(std::bitset<16>& x, std::bitset<16>& y);
- /**
- * @brief Разбиение 128-битного ключа на K-фрагменты
- * @param key128 Входящий 128-битный ключ
- * @return Массив K-фрагментами 128-битного ключа
- */
- static std::vector<std::bitset<16> > keygen(std::bitset<128> key128);
- /**
- * @brief Разбиение 64-битного блока на 4 субблока по 16 бит
- * @param N Входящий 64-битный блок
- * @return Массив с 4 субблоками
- */
- static std::vector<std::bitset<16> > subbgen(std::bitset<64> N);
- static std::vector<std::bitset<8> > resultcompiler(std::bitset<16> A, std::bitset<16>B, std::bitset<16>C, std::bitset<16>D);
- /**
- * @brief Функция итерации
- * @param X1__X4 a b c d
- * @param key модифицированный ключ
- * @param round раунд
- * @param iter итерация
- * @return Массив с преобразованными субблоками
- */
- static std::vector<std::bitset<16> > iteration (std::bitset<16> X1, std::bitset<16> X2, std::bitset<16> X3, std::bitset<16> X4, std::bitset<16>key, int round, int iter);
- };
- #endif // TOOLS_H
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement