Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
tiny-AES-c — C言語による小型ポータブルAES128/192/256 | Kitploit
ツール/GitHubGitHub/kokke/tiny-aes-c
組み込みシステムセキュリティ暗号化/復号化ツール暗号化暗号化 第18位暗号化/復号化ツール 第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バイトのブロックごとに関数を呼び出してください。詳細は wikipediaのECBに関する記事 を参照してください。
  • このライブラリは、小さなコードサイズとシンプルさを重視して設計されており、小さなバイナリサイズ、低メモリフットプリント、移植性が高性能よりも重要であるケースを対象としています。速度が気になる場合は、Mbed TLS、OpenSSL など、より複雑なライブラリを試すことができます。

aes.h でシンボルCBC、CTR、ECBを定義することで、任意の、またはすべての動作モードを選択して使用できます(詳細についてはコメントをお読みください)。

C++ユーザーは aes.h の代わりに aes.hpp を #include してください。

悪意のある入力による範囲外メモリアクセスエラーに対する、組み込みのエラーチェックや保護はありません。

このモジュールは、ARM用にコンパイルすると200バイト未満のRAMと1〜2KのROMを使用しますが、有効にするモードによって結果は異なります。

これは私がこれまで見た中で最も小さなC言語実装の1つですが、もっと小さいもの(またはここのコードの改良案)をご存知でしたら、ぜひご連絡ください。

このコードは、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・ノンスの生成など、実装の詳細に関して有用です。

このプロジェクトに貢献してくださった すべてのすばらしい方々 に心からの感謝を申し上げます。

このリポジトリのすべての素材はパブリックドメインにあります。

ツールをダウンロード