Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
tiny-AES-c — C로 작성된 소형 휴대용 AES128/192/256 | Kitploit
도구/GitHubGitHub/kokke/tiny-aes-c
Embedded Systems SecurityEncryption/Decryption ToolsCryptographyCryptography #18위Encryption/Decryption Tools #19위
GitHubkokke/tiny-aes-c

tiny-AES-c

C로 작성된 소형 휴대용 AES128/192/256

저장소 보기
5.0k1.4k51년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CI

C로 작성된 Tiny AES

이것은 C로 작성된 AES ECB, CTR 및 CBC 암호화 알고리즘의 작고 휴대성이 뛰어난 구현입니다.

aes.h에서 AES192 또는 AES256 기호를 정의하여 기본 키 크기인 128비트를 192비트 또는 256비트로 변경할 수 있습니다.

API는 매우 간단하며 다음과 같은 형태입니다 (C99 <stdint.h> 스타일의 유형 주석을 사용합니다):

root@kitploit:~
/* 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 등 더 복잡한 라이브러리를 시도해 볼 수 있습니다.

aes.h에서 CBC, CTR 또는 ECB 기호를 정의하여 운영 모드 중 일부 또는 전체를 선택적으로 사용할 수 있습니다 (자세한 내용은 주석을 읽으십시오).

C++ 사용자는 aes.h 대신 aes.hpp를 #include해야 합니다.

악의적인 입력으로 인한 경계를 벗어난 메모리 접근 오류에 대한 내장된 오류 검사 또는 보호 기능이 없습니다.

이 모듈은 ARM용으로 컴파일할 때 200바이트 미만의 RAM과 1-2K ROM을 사용하지만, 활성화된 모드에 따라 결과는 다를 수 있습니다.

제가 본 C 구현 중 가장 작은 축에 속하며, 더 작은 구현을 알고 계시다면(또는 이 코드에 대한 개선 사항이 있다면) 저에게 연락해 주십시오.

저는 64비트 x86, 32비트 ARM 및 8비트 AVR 플랫폼에서 이 코드를 성공적으로 사용했습니다.

CTR 모드만 ARM용으로 컴파일했을 때의 GCC 크기 출력:

root@kitploit:~
$ 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 명령어 세트로 컴파일하면 코드 크기가 1K보다 훨씬 작아집니다.

root@kitploit:~
$ 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

저는 Free Software Foundation, ARM GCC 컴파일러를 사용하고 있습니다:

root@kitploit:~
$ 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판 부록 F: AES 운영 모드의 예시 벡터.

문서의 다른 부록은 예를 들어 패딩, CTR 모드에서의 IV 및 nonce 생성 등 구현 세부 사항에 유용합니다.

이 프로젝트에 기여해 주신 모든 좋은 분들께 진심으로 감사드립니다.

이 저장소의 모든 자료는 퍼블릭 도메인에 있습니다.

도구 다운로드