Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
tiny-AES-c — Pequeno AES128/192/256 portátil em C | Kitploit
Ferramentas/GitHubGitHub/kokke/tiny-aes-c
Segurança de Sistemas EmbarcadosFerramentas de Criptografia/DescriptografiaCriptografiaTop em Criptografia nº18Top em Ferramentas de Criptografia/Descriptografia nº19
GitHubkokke/tiny-aes-c

tiny-AES-c

Pequeno AES128/192/256 portátil em C

Ver Repositório
5.0k1.4k20há 1 anoRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CI

Tiny AES em C

Esta é uma implementação pequena e portátil dos algoritmos de criptografia AES ECB, CTR e CBC escritos em C.

Você pode substituir o tamanho de chave padrão de 128 bits por 192 ou 256 bits definindo os símbolos AES192 ou AES256 em aes.h.

A API é muito simples e se parece com isto (estou usando tipos anotados no estilo C99 <stdint.h>):

/* Initialize context calling one of: */
void AES_init_ctx(struct AES_ctx* ctx, const uint8_t* key);
void AES_init_ctx_iv(struct AES_ctx* ctx, const uint8_t* key, const uint8_t* iv);

/* ... or reset IV at random point: */
void AES_ctx_set_iv(struct AES_ctx* ctx, const uint8_t* iv);

/* Then start encrypting and decrypting with the functions below: */
void AES_ECB_encrypt(const struct AES_ctx* ctx, uint8_t* buf);
void AES_ECB_decrypt(const struct AES_ctx* ctx, uint8_t* buf);

void AES_CBC_encrypt_buffer(struct AES_ctx* ctx, uint8_t* buf, size_t length);
void AES_CBC_decrypt_buffer(struct AES_ctx* ctx, uint8_t* buf, size_t length);

/* Same function for encrypting as for decrypting in CTR mode */
void AES_CTR_xcrypt_buffer(struct AES_ctx* ctx, uint8_t* buf, size_t length);

Notas importantes:

  • Nenhum preenchimento (padding) é fornecido, portanto, para CBC e ECB, todos os buffers devem ser múltiplos de 16 bytes. Para preenchimento, o PKCS7 é recomendável.
  • O modo ECB é considerado inseguro para a maioria dos usos e não é implementado em modo de fluxo (streaming). Se você precisar desse modo, chame a função para cada bloco de 16 bytes que precisar criptografar. Consulte o artigo da Wikipédia sobre ECB para mais detalhes.
  • Esta biblioteca foi projetada para código de tamanho reduzido e simplicidade, destinada a casos em que o tamanho reduzido do binário, o baixo consumo de memória e a portabilidade são mais importantes do que o alto desempenho. Se a velocidade for uma preocupação, você pode tentar bibliotecas mais complexas, por exemplo Mbed TLS, OpenSSL etc.

Você pode optar por usar qualquer um ou todos os modos de operação, definindo os símbolos CBC, CTR ou ECB em aes.h (leia os comentários para esclarecimentos).

Usuários de C++ devem incluir aes.hpp via #include em vez de aes.h

Não há verificação de erros integrada ou proteção contra erros de acesso à memória fora dos limites resultantes de entrada maliciosa.

O módulo usa menos de 200 bytes de RAM e 1-2K de ROM quando compilado para ARM, mas os resultados podem variar dependendo de quais modos estão habilitados.

É uma das menores implementações em C que já vi até hoje, mas entre em contato comigo se você conhecer algo menor (ou tiver melhorias para o código aqui).

Usei o código com sucesso em plataformas x86 de 64 bits, ARM de 32 bits e AVR de 8 bits.

Saída de tamanho do GCC quando apenas o modo CTR é compilado para ARM:

$ arm-none-eabi-gcc -Os -DCBC=0 -DECB=0 -DCTR=1 -c aes.c
$ size aes.o
   text    data     bss     dec     hex filename
   1171       0       0    1171     493 aes.o

.. e ao compilar para o conjunto de instruções THUMB, terminamos bem abaixo de 1K em tamanho de código.

$ arm-none-eabi-gcc -Os -mthumb -DCBC=0 -DECB=0 -DCTR=1 -c aes.c
$ size aes.o
   text    data     bss     dec     hex filename
    903       0       0     903     387 aes.o

Estou usando o compilador GCC ARM da Free Software Foundation:

$ arm-none-eabi-gcc --version
arm-none-eabi-gcc (4.8.4-1+11-1) 4.8.4 20141219 (release)
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Esta implementação é verificada em relação aos dados em:

Publicação Especial 800-38A, edição de 2001, do National Institute of Standards and Technology Apêndice F: Vetores de Exemplo para Modos de Operação do AES.

Os outros apêndices do documento são valiosos para detalhes de implementação, por exemplo, sobre preenchimento (padding), geração de IVs e nonces no modo CTR, etc.

Um sincero agradecimento a todas as pessoas legais que contribuíram para este projeto.

Todo o material neste repositório é de domínio público.

Baixar ferramenta