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
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Máquinas Virtuais com IP estático acessando Internet no Virtualbox
Fim da linha para o Skype! (4)
Problemas na Atualização do Ubuntu 20.04 para 22.04 (6)