nVidia CUDA を使用して CTR モードで AES-256 を実装しようとしています。キー拡張用の CPU コードのコーディングに成功したので、実際の AES-256 アルゴリズムを実装する必要があります。ウィキペディアによると、私が見たいくつかのコード、特にこの PDF (9 ページ) によると、AES ラウンドは一連のテーブル ルックアップとして実装できます。私の質問は、これらのテーブルをどのように生成するのですか? これらのテーブルを格納するには 4 KB が必要であることは承知していますが、それは問題ではありません。私は一日中これらのテーブルを見つけようとしましたが、成功しませんでした. リンクを投稿した PDF には、ルックアップ テーブル T0、T1、T2、および T3 が記載されていますが、これらが何であるかはわかりません。また、ラウンド キー 4、5、6、および 7 についても言及していますが、これらのインデックスが何を指しているのかもわかりません。
これらのルックアップ テーブルを生成する方法を理解するのに最も近いのは、このプロジェクトです。コード内には、次のようなコメントがあります。
Te0[x] = S [x].[02, 01, 01, 03];
Te1[x] = S [x].[03, 02, 01, 01];
Te2[x] = S [x].[01, 03, 02, 01];
Te3[x] = S [x].[01, 01, 03, 02];
ただし、その表記が何を意味するのか完全にはわかりません (それは行列の乗算ですか?)。私が認識しているのは、S ボックス マトリックスと同様に、混合列部分の定数マトリックスだけです。
[編集] 誰かがそれを指摘したので、ルックアップの実装が実際に遅くなる可能性があるのはなぜですか? ここでルックアップ テーブルなしで AES を実装するのが賢明でしょうか?