Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Microsoft Specific
Emits the Advanced Encryption Standard (AES) instruction aesenclast. This instruction performs the final round of AES encryption.
__m128i _mm_aesenclast_si128 (
__m128i v,
__m128i rkey
);
Parameters
Parameter |
Description |
[in] v |
The data that this instruction encrypts. |
[in] rkey |
The round key that this instruction uses to encrypt the data in v. |
Return value
The encrypted form of the data in v.
Requirements
Intrinsic |
Architecture |
_mm_aesenclast_si128 |
x86, x64 |
Header file <wmmintrin.h>
Remarks
This instruction encrypts data by using an Equivalent Inverse Cipher with a 128 bit key. AES encryption requires 10 iterations of encryption by using a cipher key that is 128 bits. You must perform the final iteration with this instruction. The previous nine iterations use _mm_aesenc_si128.
To decrypt the encoded data, use _mm_aesdeclast_si128.
Example
#include <wmmintrin.h>
#include <stdio.h>
int main()
{
__m128i a;
__m128i res;
__m128i key;
a.m128i_u64[1] = 0x8899AABBCCDDEEFF;
a.m128i_u64[0] = 0x0123456789ABCDEF;
key.m128i_u64[1] = 0x0022446688AACCEE;
key.m128i_u64[0] = 0x1133557799BBDDFF;
res = _mm_aesenclast_si128( a, key );
printf_s("Original data: 0x%016I64x%016I64x\n",
a.m128i_u64[1], a.m128i_u64[0]);
printf_s("Encoded data: 0x%016I64x%016I64x\n",
res.m128i_u64[1], res.m128i_u64[0]);
return 0;
}
Original data: 0x8899aabbccddeeff0123456789abcdef Encoded data: 0x4b04f98cf4c860f8b6dd7df25d7ab320
See Also
Reference
Change History
Date |
History |
Reason |
---|---|---|
July 2008 |
Added the documentation for this new intrinsic. |
SP1 feature change. |