AES 暗号

AES 暗号の高速化の例

ここでは高速化する為の単純な例を示します。

方法は前もって計算してメモリに格納してある数値を読み出す事により高速化をします

mulという乗算モジュールがありますが、乗算を計算をする代わりに計算結果をメモリに 格納してその数値を読み出す事により高速化しています。
通常のプログラム(dos_aes.c)と比較すれば手法の違いが分かると思います。

この手法で高速化をした場合の欠点はメモリを多く必要とする事にあります。
同一の装置を大量に作成する場合にはメモリが小さい必要がありますので 場合によっては計算時間がかかったとしてもメモリが小さい事の方が重要な場合があります

ダウンロード

Aes 暗号プログラムの高速化の例(ソース一式)(2009/11/26版) ms vc6.0

ソースだけのダウンロード

Aes 暗号プログラム(ソース dos_aes2.c)(2009/11/26版) dos版ソース

プログラム使用方法

コマンドラインから AES 暗号/復号 を行なうプログラムです。

このソースは、AESを仕様から理解することを目的に C言語で当社にて作成したもので、
GNU General Public License に従ったフリーのプログラムです。
Microsoft Visual C++ 6.0 環境でコンパイルできます。
(Microsoft Visual Studio 2008,2010,2012,2013,2015,2017,2019,2022
(2022はプロジェクト再作成か一度2015等で変換が必要)もコンパイル確認済です)

ディレクトリ PjcAes2 の下にあるプロジェクト aes2.dsp がメインです。
Debugでコンパイル後 PjcAes2\Debug\aes2.exe にて動作確認出来ます。

仕様についてはfips-197.pdf を参照下さい

プログラムについて

プログラム、ソースに関する質問は応じかねますので、ご了承下さい。
プログラム、ソースの再配布については、GNU General Public License 
を参照してください。

通常の頁の内容

通常のプログラムに関する情報は通常のAES情報 を参照してください。

プログラムの高速化を勉強される方へ

ここに示したサンプルは、高速化の手順の例です、
実際に高速化をされる場合には、手法は複雑になりますが、どなたが考えたとしても、 最終的には、一つの解になると思います。
高速化の例としては、以前に乗せた頁にありますが、 この高速化の例を解読するよりも、もし勉強の為に、この頁をご覧の方は、 是非、ご自身で、パズルをして、同じ構造のプログラムを作成してみて下さい
最終的な論理構造は、仕様書(fips-197.pdf) とは異なります。仕様書の手順通りに作成した場合には、大幅な高速化にはなりません。 多分、ご自身で考えた方が、解読するよりも早く、結論に達すると思います。 解読する事をあきらめるのではなく、人のプログラムの構造を解読する事は時間がかかる事を理解して欲しいのです。 安易にコピーしたプログラムを使用しても、プログラムの技術は良くなりません。
作成したプログラムの構造が同じでも、プログラムの実行速度は、それぞれ異なりますが。 それは、コンパイラの性能もありますし、アセンブラを使用するかどうかにもよります。 それでも、ご自身で作成する事の方が、有益で有ることを祈ります。
ご自身で勉強される方の参考になれば幸いです。