Collapse the table of content
Expand the table of content


Visual Studio 2010

Microsoft Specific

Emits the Advanced Encryption Standard (AES) instruction aesdec. This instruction performs one round of AES decryption.

__m128i _mm_aesdec_si128 (
   __m128i v,
   __m128i rkey



[in] v

The state parameter that contains the data for this instruction to decrypt.

[in] rkey

The round key that this instruction uses to decrypt the data from v.

The decrypted data.




x86, x64

Header file <wmmintrin.h>

This instruction decrypts data by using an Equivalent Inverse Cipher with a 128 bit key. AES decryption requires 10 iterations of decryption by using a cipher key that is 128 bits. Each iteration uses this instruction, except for the last iteration. The last iteration must be performed by _mm_aesdeclast_si128.

To encrypt data and be compliant with the AES, use _mm_aesenc_si128.

#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_aesdec_si128( a, key );

    printf_s("Original data: 0x%016I64x%016I64x\n",
        a.m128i_u64[1], a.m128i_u64[0]);
    printf_s("Decoded data: 0x%016I64x%016I64x\n",
        res.m128i_u64[1], res.m128i_u64[0]);

    return 0;
Original data: 0x8899aabbccddeeff0123456789abcdef
Decoded data: 0xb57ecfa381da39ee044e4f5176fec48f

Adiciones de comunidad

© 2016 Microsoft