Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
tiny-AES-c — Небольшая портативная реализация AES128/192/256 на C | Kitploit
Инструменты/GitHubGitHub/kokke/tiny-aes-c
Безопасность встроенных системИнструменты шифрования/дешифрованияКриптографияТоп в Криптография №18Топ в Инструменты шифрования/дешифрования №19
GitHubkokke/tiny-aes-c

tiny-AES-c

Небольшая портативная реализация AES128/192/256 на C

Репозиторий
5.0k1.4k211 год назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CI

Tiny AES на C

Это небольшая и переносимая реализация алгоритмов шифрования AES ECB, CTR и CBC, написанная на C.

Вы можете переопределить размер ключа по умолчанию — 128 бит — на 192 или 256 бит, определив символы AES192 или AES256 в aes.h.

API очень прост и выглядит следующим образом (я использую аннотированные типы в стиле 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);

Важные замечания:

  • Заполнение не предусмотрено, поэтому для CBC и ECB все буферы должны быть кратны 16 байтам. Для заполнения рекомендуется PKCS7.
  • Режим ECB считается небезопасным для большинства применений и не реализован в потоковом режиме. Если вам нужен этот режим, вызывайте функцию для каждого блока по 16 байт, который требуется зашифровать. Подробнее см. статью Википедии об ECB.
  • Эта библиотека разработана для малого размера кода и простоты и предназначена для случаев, когда небольшой размер двоичного файла, низкое потребление памяти и переносимость важнее высокой производительности. Если скорость критична, можно попробовать более сложные библиотеки, например Mbed TLS, OpenSSL и т.д.

Вы можете использовать любой или все режимы работы, определив символы CBC, CTR или ECB в aes.h (читайте комментарии для пояснения).

Пользователям C++ следует #include aes.hpp вместо aes.h

В библиотеке нет встроенной проверки ошибок или защиты от ошибок выхода за границы памяти в результате вредоносного ввода.

Модуль использует менее 200 байт ОЗУ и 1–2 КБ ПЗУ при компиляции для ARM, но результат может отличаться в зависимости от включённых режимов.

Это одна из самых компактных реализаций на C, которые я видел, но свяжитесь со мной, если вам известно что-то более компактное (или если у вас есть улучшения для этого кода).

Я успешно использовал этот код на платформах 64-бит x86, 32-бит ARM и 8-бит AVR.

Вывод размера GCC при компиляции только режима CTR для 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

.. а при компиляции для набора инструкций THUMB размер кода оказывается значительно меньше 1 КБ.

$ 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

Я использую компилятор ARM GCC от 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.

Эта реализация проверена на данных из:

Специальная публикация 800-38A 2001 ED Национального института стандартов и технологий Приложение F: Примеры векторов для режимов работы AES.

Другие приложения документа полезны для деталей реализации, например, заполнения, генерации IV и nonce в режиме CTR и т.д.

Искренняя благодарность всем замечательным людям, которые внесли вклад в этот проект.

Все материалы в этом репозитории находятся в общественном достоянии.

Скачать инструмент