Pular para o conteúdo principal

Como criptografar e descriptografar usando o AES em C++

A implementação do AES (Advanced Encryption Standard) em C++ pode ser feita usando bibliotecas criptográficas, como OpenSSL, Crypto++, ou implementando o algoritmo manualmente. Neste exemplo, vou mostrar como usar a biblioteca Crypto++ para criptografar e descriptografar usando AES em modo de bloco CBC (Cipher Block Chaining). Certifique-se de ter a biblioteca Crypto++ instalada no seu sistema.
 
#include #include #include #include #include #include #include using namespace CryptoPP; std::string AES_Encrypt(const std::string& plaintext, const std::string& key, const std::string& iv) { std::string ciphertext; try { CBC_Mode::Encryption encryption((byte*)key.c_str(), key.length(), (byte*)iv.c_str()); StringSource(plaintext, true, new StreamTransformationFilter(encryption, new StringSink(ciphertext) ) ); } catch (const Exception& e) { std::cerr << e.what() << std::endl; std::exit(1); } return ciphertext; } std::string AES_Decrypt(const std::string& ciphertext, const std::string& key, const std::string& iv) { std::string decryptedtext; try { CBC_Mode::Decryption decryption((byte*)key.c_str(), key.length(), (byte*)iv.c_str()); StringSource(ciphertext, true, new StreamTransformationFilter(decryption, new StringSink(decryptedtext) ) ); } catch (const Exception& e) { std::cerr << e.what() << std::endl; std::exit(1); } return decryptedtext; } int main() { // Chave de 16 bytes (128 bits) e IV de 16 bytes para AES-128 std::string key = "0123456789abcdef"; std::string iv = "0123456789abcdef"; std::string plaintext = "Hello, AES!"; std::cout << "Texto original: " << plaintext << std::endl; // Criptografar std::string ciphertext = AES_Encrypt(plaintext, key, iv); std::cout << "Texto criptografado: "; for (char c : ciphertext) std::cout << std::hex << std::setw(2) << std::setfill('0') << (int)(unsigned char)c; std::cout << std::endl; // Descriptografar std::string decryptedtext = AES_Decrypt(ciphertext, key, iv); std::cout << "Texto descriptografado: " << decryptedtext << std::endl; return 0; }
Certifique-se de incluir a biblioteca Crypto++ no seu projeto e de compilar o código com as flags apropriadas para vincular a biblioteca. Este é apenas um exemplo básico. Certifique-se de considerar a segurança da chave e do IV em um ambiente de produção e de seguir as melhores práticas de segurança ao lidar com criptografia.

Comentários

Postagens mais visitadas deste blog

Vigilância Global O Olho Que Nunca Dorme

  A pesquisa que revela que mais de 70% dos brasileiros veem a necessidade de regulamentação para o uso de inteligência artificial (IA) levanta questões profundas sobre o equilíbrio entre segurança e liberdade em uma sociedade democrática. Embora a regulação seja frequentemente promovida como um meio de proteger os cidadãos contra abusos tecnológicos, é essencial questionar até que ponto esse controle pode se transformar em um instrumento de restrição das liberdades individuais. A Regulamentação como Ferramenta de Controle A proposta de criação do Sistema Nacional de Regulação e Governança de Inteligência Artificial, liderada pelo presidente do Senado, Rodrigo Pacheco, exemplifica como governos podem usar a justificativa de "proteção" para expandir seu controle sobre tecnologias emergentes. Embora o objetivo declarado seja proteger a sociedade de riscos, como golpes e manipulação eleitoral, a regulamentação excessiva pode facilmente se tornar uma ferramenta de censura e vig...

Arquitetura de um processador

  A arquitetura de um processador refere-se à estrutura interna e ao conjunto de princípios que definem como ele funciona e como processa informações. É o "projeto" que descreve como as diferentes partes do processador interagem e como o processador interage com o resto do sistema. Aqui estão os principais componentes e conceitos envolvidos na arquitetura de um processador: Unidade Central de Processamento (CPU):     Unidade de Controle (CU - Control Unit): Responsável por gerenciar e coordenar todas as operações do processador. Ela interpreta as instruções do programa e direciona outras partes do processador para executar as tarefas necessárias.   Unidade Lógica e Aritmética (ALU - Arithmetic Logic Unit): Realiza operações aritméticas (como adição e subtração) e operações lógicas (como AND, OR, NOT).     Registradores: Pequenas áreas de armazenamento dentro do processador que armazenam dados temporários e instruções durante o processamento. Conjunto de ...

Brasil: Exportador de Golpes Cibernéticos

  O Brasil além de ser um dos países mais afetados por ameaças digitais, ele  também se destaca como um dos principais exportadores de golpes cibernéticos , especialmente na categoria de trojans bancários, que têm migrado das plataformas tradicionais para os dispositivos móveis. Fonte:https://cybermap.kaspersky.com/pt/stats#country=215&type=OAS&period=w Fonte:https://cybermap.kaspersky.com/pt/stats#country=215&type=OAS&period=w Na lista das ameaças mais comuns, os golpes criados no Brasil , como os trojans Banbra , Brats e Basbanke , lideram o ranking e representam quase 60% das tentativas de infecção para celulares na América Latina nos últimos 12 meses. Esse cenário aponta para uma tendência preocupante: segundo especialistas da Kaspersky, os grupos de criminosos brasileiros devem se expandir ainda mais em escala global . Fabio Assolini, diretor da Equipe Global de Pesquisa e Análise da Kaspersky para a América Latina, ressalta: “O cenário de ameaças móveis...