Advertisement
DBDEBICH

Untitled

Nov 24th, 2023
531
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.13 KB | Source Code | 0 0
  1. #ifndef TOOLS_H
  2. #define TOOLS_H
  3.  
  4. #include <iostream>
  5. #include <vector>
  6. #include <bitset>
  7.  
  8.  
  9. extern int Table_C[9][4];
  10. extern int Table_S[9][4];
  11. extern char Table_logic[9][4];
  12.  
  13. class Tools {
  14.     private:
  15.     public:
  16.         /**
  17.          * @brief Циклический сдвиг вправо на N бит
  18.          * @param BYTE Входящий байт данных
  19.          * @param STEP Число на которое нужно произвести сдвиг
  20.          * @return Новый байт с произведённым свигом
  21.          */
  22.         static std::bitset<16> r_shift (std::bitset<16> BITS, unsigned int STEP);
  23.  
  24.         static bool fullAdder(bool b1, bool b2, bool& carry);
  25.         static std::bitset<16> bitsetAdd(std::bitset<16>& x, std::bitset<16>& y);
  26.  
  27.         /**
  28.          * @brief Разбиение 128-битного ключа на K-фрагменты
  29.          * @param key128 Входящий 128-битный ключ
  30.          * @return Массив K-фрагментами 128-битного ключа
  31.          */
  32.         static std::vector<std::bitset<16> > keygen(std::bitset<128> key128);
  33.  
  34.         /**
  35.          * @brief Разбиение 64-битного блока на 4 субблока по 16 бит
  36.          * @param N Входящий 64-битный блок
  37.          * @return Массив с 4 субблоками
  38.          */
  39.         static std::vector<std::bitset<16> > subbgen(std::bitset<64> N);
  40.  
  41.         static std::vector<std::bitset<8> > resultcompiler(std::bitset<16> A, std::bitset<16>B, std::bitset<16>C, std::bitset<16>D);
  42.  
  43.         /**
  44.          * @brief Функция итерации
  45.          * @param X1__X4 a b c d
  46.          * @param key модифицированный ключ
  47.          * @param round раунд
  48.          * @param iter итерация
  49.          * @return Массив с преобразованными субблоками
  50.          */
  51.         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);
  52. };
  53. #endif // TOOLS_H
Tags: C++ cpp
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement