インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

キャリーなし乗算命令および AES (Advanced Encryption Standard) 命令用の組込み関数

キャリーなし組込み関数および AES (Advanced Encryption Standard) 組込み関数のプロトタイプは、wmmintrin.h ファイル内にあります。

キャリーなし乗算組込み関数

単一の汎用ブロック暗号化組込み関数を次に示します。

__m128i _mm_clmulepi64_si128(__m128i v1, __m128i v2, const int imm8);

v1 中の 1 つのクワッドワードと v2 中の 1 つのクワッドワードのキャリーなし乗算を実行して、結果を返します。imm8 値は、v1 および v2 中の使用するクワッドワードを特定するのに使用されます。

対応する命令: PCLMULQDQ

AES (Advanced Encryption Standard) 組込み関数

AES 組込み関数を次に示します。

__m128i _mm_aesdec_si128(__m128i v, __m128i rkey);

rkey からの 128 ビットのラウンドキーと v からの 128 ビットのデータ (状態) に対して、Equivalent Inverse Cipher を使用して、1 ラウンドの AES 暗号解読処理を行います。

対応する命令: AESDEC

__m128i _mm_aesdeclast_si128(__m128i v, __m128i rkey);

rkey からの 128 ビットのラウンドキーと v からの 128 ビットのデータ (状態) に対して、Equivalent Inverse Cipher を使用して、最終ラウンドの AES 暗号解読処理を行います。

対応する命令: AESDECLAST

__m128i _mm_aesenc_si128(__m128i v, __m128i rkey);

rkey からの 128 ビットのラウンドキーと v からの 128 ビットのデータ (状態) に対して、1 ラウンドの AES 暗号化処理を行います。

対応する命令: AESENC

__m128i _mm_aesenclast_si128(__m128i v, __m128i rkey);

rkey からの 128 ビットのラウンドキーと v からの 128 ビットのデータ (状態) に対して、最終ラウンドの AES 暗号化処理を行います。

対応する命令: AESENCLAST

__m128i _mm_aesimc_si128(__m128i v);

v からの 128 ビットのラウンドキーに対して InvMixColumn 変換を行い、結果を返します。

対応する命令: AESIMC

__m128i _mm_aeskeygenassist_si128(__m128i ckey, const int rcon);

ckey で指定されている 128 ビットのデータに対して、rcon で指定されている 8 ビットのラウンド定数 (RCON) を使用して、AES のラウンドキーの生成を支援し、結果を返します。

対応する命令: AESKEYGENASSIST