Enviado em 30/04/2021 - 10:19h
Boa noite pessoal,class AES_Key { private: // Containers: unsigned char Key[16]; std::vector<std::vector<unsigned char>> RoundKeys{}; // Auxiliary Functions: void RotWord(std::vector<unsigned char>& word) { unsigned char temp{word.at(0)}; word.at(0) = word.at(3); word.at(3) = temp; for (unsigned short i{0}; i <= 1; i++) { temp = word.at(i); word.at(i) = word.at(i+1); word.at(i+1) = temp; } } void SubWord(std::vector<unsigned char>& word) { for (unsigned short i{0}; i < 4; i++) word.at(i) = AES_SubTable[word.at(i)]; } static unsigned short Rcon(unsigned short Round) { Round /= 4; switch (Round) { case 1: return 0x1; case 2: return 0x2; case 3: return 0x4; case 4: return 0x8; case 5: return 0x10; case 6: return 0x20; case 7: return 0x40; case 8: return 0x80; case 9: return 0x1B; case 10: return 0x36; default: throw 0; } } // Functions: void ExpandKey() { // Generate the first 4 words: std::vector<std::vector<unsigned char>> words{}; for (unsigned short i{0}; i < 4; i++) { words.push_back(std::vector<unsigned char>{}); words.back().push_back(this->Key[4*i]); words.back().push_back(this->Key[4*i+1]); words.back().push_back(this->Key[4*i+2]); words.back().push_back(this->Key[4*i+3]); } // Generate the next 40 words: std::vector<unsigned char>* temp{nullptr}; for (unsigned short i{4}; i < 44; i++) { temp = &words.at(i-1); if ((i % 4) == 0) { RotWord(*temp); SubWord(*temp); temp->at(0) ^= Rcon(i); } words.push_back(std::vector<unsigned char>{}); std::vector<unsigned char>* xorword{&words[i-4]}; for (unsigned short j{0}; j < 4; j++) { words.back().push_back(xorword->at(j) ^ temp->at(j)); } } // Construct Round Keys: } public: // Constructors: AES_Key(const char* key) { ///// Padding not implemented yet ///// for (unsigned short i{0}; i < 16; i++) this->Key[i] = (unsigned char)key[i]; this->ExpandKey(); } // Getters: unsigned char* InitialKey() {return this->Key;} std::vector<unsigned char> RoundKey(unsigned short Round) {return this->RoundKeys[Round];} };
Enviado em 30/04/2021 - 14:00h
Criar entrada (menuentry) ISO no Grub
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalar o VIM 9.1 no Debian 12
Como saber o range de um IP público?
Muitas dificuldades ao instalar distro Linux em Notebook Sony Vaio PCG-6131L (VPCEA24FM)
Slackpkg+ (Slackpkg Plus) está de volta!
Como dividir duas janelas igualmente e lado-a-lado na sua tela
compilação samba 4.22 rock linux 9.5 (4)
Problemas com SQL em objeto TLabel ... [RESOLVIDO] (3)