⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aes.cpp

📁 mysql-5.0.33源码包
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    AS2(    mov   edi, edx                                              )    AS2(    shr   edi, 16                                               )    AS2(    and   edi, 255                                              )    AS2(    xor   esi, DWORD PTR [ebp + 1024 + edi*4]                   )    AS2(    movzx edi, ah                                               )    AS2(    xor   esi, DWORD PTR [ebp + 2048 + edi*4]                   )    AS2(    movzx edi, bl                                               )    AS2(    xor   esi, DWORD PTR [ebp + 3072 + edi*4]                   )    AS2(    movd  mm2, esi                                              )             /* Put3 (edx) =                  Te0[get3,rs 24] ^                Te1[get0,rs 16] ^                Te2[get1,rs  8] ^                Te3[get2,rs  0]             */    AS2(    mov   esi, edx                                              )    AS2(    shr   esi, 24                                               )    AS2(    mov   edx, DWORD PTR [ebp + esi*4]                          )    AS2(    mov   edi, eax                                              )    AS2(    shr   edi, 16                                               )    AS2(    and   edi, 255                                              )    AS2(    xor   edx, DWORD PTR [ebp + 1024 + edi*4]                   )    AS2(    movzx esi, bh                                               )    AS2(    xor   edx, DWORD PTR [ebp + 2048 + esi*4]                   )    AS2(    movzx edi, cl                                               )    AS2(    xor   edx, DWORD PTR [ebp + 3072 + edi*4]                   )            // xOr    AS2(    movd   esi, mm6                      )   //  rk    AS2(    movd   eax, mm0                                             )    AS2(    add    esi, 16                                              )    AS2(    movd   ebx, mm1                                             )    AS2(    movd   mm6, esi                      )   //  save back    AS2(    movd   ecx, mm2                                             )    AS2(    xor   eax, DWORD PTR [esi]                                  )    AS2(    xor   ebx, DWORD PTR [esi +  4]                             )    AS2(    movd  edi, mm5                                              )    AS2(    xor   ecx, DWORD PTR [esi +  8]                             )    AS2(    xor   edx, DWORD PTR [esi + 12]                             )    AS1(    dec   edi                                                   )    AS2(    movd  mm5, edi                                              )    AS1(    jnz   loop1                                                 )            // last round            /*            Put0 (mm0) =                (Te4[get0, rs24] & 0xff000000) ^  h = 4278190080                (Te4[get1, rs16] & 0x00ff0000) ^  h =   16711680                (Te4[get2, rs 8] & 0x0000ff00) ^  h =      65280                (Te4[get3, rs 0] & 0x000000ff)    h =        255            */    AS2(    mov   esi, eax                                              )    AS2(    shr   esi, 24                                               )    AS2(    mov   esi, DWORD PTR [ebp + 4096 + esi*4]                   )    AS2(    and   esi, 4278190080                                       )    AS2(    mov   edi, ebx                                              )    AS2(    shr   edi, 16                                               )    AS2(    and   edi, 255                                              )    AS2(    mov   edi, DWORD PTR [ebp + 4096 + edi*4]                   )    AS2(    and   edi, 16711680                                         )    AS2(    xor   esi, edi                                              )    AS2(    movzx edi, ch                                               )    AS2(    mov   edi, DWORD PTR [ebp + 4096 + edi*4]                   )    AS2(    and   edi, 65280                                            )    AS2(    xor   esi, edi                                              )    AS2(    movzx edi, dl                                               )    AS2(    mov   edi, DWORD PTR [ebp + 4096 + edi*4]                   )    AS2(    and   edi, 255                                              )    AS2(    xor   esi, edi                                              )    AS2(    movd  mm0, esi                                              )            /*            Put1 (mm1) =                (Te4[get1, rs24] & 0xff000000) ^  h = 4278190080                (Te4[get2, rs16] & 0x00ff0000) ^  h =   16711680                (Te4[get3, rs 8] & 0x0000ff00) ^  h =      65280                (Te4[get0, rs 0] & 0x000000ff)    h =        255            */    AS2(    mov   esi, ebx                                              )    AS2(    shr   esi, 24                                               )    AS2(    mov   esi, DWORD PTR [ebp + 4096 + esi*4]                   )    AS2(    and   esi, 4278190080                                       )    AS2(    mov   edi, ecx                                              )    AS2(    shr   edi, 16                                               )    AS2(    and   edi, 255                                              )    AS2(    mov   edi, DWORD PTR [ebp + 4096 + edi*4]                   )    AS2(    and   edi, 16711680                                         )    AS2(    xor   esi, edi                                              )    AS2(    movzx edi, dh                                               )    AS2(    mov   edi, DWORD PTR [ebp + 4096 + edi*4]                   )    AS2(    and   edi, 65280                                            )    AS2(    xor   esi, edi                                              )    AS2(    movzx edi, al                                               )    AS2(    mov   edi, DWORD PTR [ebp + 4096 + edi*4]                   )    AS2(    and   edi, 255                                              )    AS2(    xor   esi, edi                                              )    AS2(    movd  mm1, esi                                              )            /*            Put2 (mm2) =                (Te4[get2, rs24] & 0xff000000) ^  h = 4278190080                (Te4[get3, rs16] & 0x00ff0000) ^  h =   16711680                (Te4[get0, rs 8] & 0x0000ff00) ^  h =      65280                (Te4[get1, rs 0] & 0x000000ff)    h =        255            */    AS2(    mov   esi, ecx                                              )    AS2(    shr   esi, 24                                               )    AS2(    mov   esi, DWORD PTR [ebp + 4096 + esi*4]                   )    AS2(    and   esi, 4278190080                                       )    AS2(    mov   edi, edx                                              )    AS2(    shr   edi, 16                                               )    AS2(    and   edi, 255                                              )    AS2(    mov   edi, DWORD PTR [ebp + 4096 + edi*4]                   )    AS2(    and   edi, 16711680                                         )    AS2(    xor   esi, edi                                              )    AS2(    movzx edi, ah                                               )    AS2(    mov   edi, DWORD PTR [ebp + 4096 + edi*4]                   )    AS2(    and   edi, 65280                                            )    AS2(    xor   esi, edi                                              )    AS2(    movzx edi, bl                                               )    AS2(    mov   edi, DWORD PTR [ebp + 4096 + edi*4]                   )    AS2(    and   edi, 255                                              )    AS2(    xor   esi, edi                                              )    AS2(    movd  mm2, esi                                              )            /*            Put3 (edx) =                (Te4[get3, rs24] & 0xff000000) ^  h = 4278190080                (Te4[get0, rs16] & 0x00ff0000) ^  h =   16711680                (Te4[get1, rs 8] & 0x0000ff00) ^  h =      65280                (Te4[get2, rs 0] & 0x000000ff)    h =        255            */    AS2(    mov   esi, edx                                              )    AS2(    shr   esi, 24                                               )    AS2(    mov   edx, DWORD PTR [ebp + 4096 + esi*4]                   )    AS2(    and   edx, 4278190080                                       )    AS2(    mov   edi, eax                                              )    AS2(    shr   edi, 16                                               )    AS2(    and   edi, 255                                              )    AS2(    mov   esi, DWORD PTR [ebp + 4096 + edi*4]                   )    AS2(    and   esi, 16711680                                         )    AS2(    xor   edx, esi                                              )    AS2(    movzx esi, bh                                               )    AS2(    mov   edi, DWORD PTR [ebp + 4096 + esi*4]                   )    AS2(    and   edi, 65280                                            )    AS2(    xor   edx, edi                                              )    AS2(    movzx edi, cl                                               )    AS2(    mov   esi, DWORD PTR [ebp + 4096 + edi*4]                   )    AS2(    and   esi, 255                                              )    AS2(    xor   edx, esi                                              )                // xOr    AS2(    movd   eax, mm0                                             )    AS2(    movd   esi, mm6                      )   //  rk    AS2(    movd   ebx, mm1                                             )    AS2(    add    esi, 16                                               )    AS2(    movd   ecx, mm2                                             )    AS2(    xor   eax, DWORD PTR [esi]                                  )    AS2(    xor   ebx, DWORD PTR [esi +  4]                             )    AS2(    xor   ecx, DWORD PTR [esi +  8]                             )    AS2(    xor   edx, DWORD PTR [esi + 12]                             )    // end    AS2(    movd  ebp, mm7                                              )            // swap    AS1(    bswap eax                                                   )    AS1(    bswap ebx                                                   )            // store    #ifdef __GNUC__        AS2(    mov esi, DWORD PTR [ebp + 16]       )   //  outBlock    #else        AS2(    mov esi, DWORD PTR [ebp + 12]       )   //  outBlock    #endif    AS1(    bswap ecx                                                   )    AS1(    bswap edx                                                   )    AS2(    mov DWORD PTR [esi],      eax                               )    AS2(    mov DWORD PTR [esi +  4], ebx                               )    AS2(    mov DWORD PTR [esi +  8], ecx                               )    AS2(    mov DWORD PTR [esi + 12], edx                               )    EPILOG()}#ifdef _MSC_VER    __declspec(naked) #endifvoid AES::AsmDecrypt(const byte* inBlock, byte* outBlock, void* boxes) const{    PROLOG()    #ifdef OLD_GCC_OFFSET        AS2(    mov   edx, DWORD PTR [ecx + 60]     )   // rounds        AS2(    lea   edi, [ecx + 64]               )   // rk     #else        AS2(    mov   edx, DWORD PTR [ecx + 56]     )   // rounds        AS2(    lea   edi, [ecx + 60]               )   // rk     #endif       AS1(    dec   edx                           )    AS2(    movd  mm6, edi                      )   // save rk    AS2(    movd  mm5, edx                      )   // save rounds    AS2(    mov   eax, DWORD PTR [esi]                                  )    AS2(    mov   ebx, DWORD PTR [esi + 4]                              )    AS2(    mov   ecx, DWORD PTR [esi + 8]                              )    AS2(    mov   edx, DWORD PTR [esi + 12]                             )    AS1(    bswap eax                                                   )    AS1(    bswap ebx                                                   )    AS1(    bswap ecx                                                   )    AS1(    bswap edx                                                   )    AS2(    xor   eax, DWORD PTR [edi]               )   // s0    AS2(    xor   ebx, DWORD PTR [edi +  4]          )   // s1    AS2(    xor   ecx, DWORD PTR [edi +  8]          )   // s2    AS2(    xor   edx, DWORD PTR [edi + 12]          )   // s3    AS1(loop2:                                                          )       /*   Put0 (mm0) =            Td0[GETBYTE(get0, rs24)] ^            Td1[GETBYTE(get3, rs16)] ^            Td2[GETBYTE(get2, rs 8)] ^            Td3[GETBYTE(tet1,     )]          */    AS2(    mov   esi, eax                                              )    AS2(    shr   esi, 24                                               )    AS2(    mov   esi, DWORD PTR [ebp + esi*4]                          )                                                        AS2(    mov   edi, edx                                              )    AS2(    shr   edi, 16                                               )    AS2(    and   edi, 255                                              )    AS2(    xor   esi, DWORD PTR [ebp + 1024 + edi*4]                   )    AS2(    movzx edi, ch                                               )    AS2(    xor   esi, DWORD PTR [ebp + 2048 + edi*4]                   )    AS2(    movzx edi, bl                                               )    AS2(    xor   esi, DWORD PTR [ebp + 3072 + edi*4]                   )    AS2(    movd  mm0, esi                                              )      /*    Put1 (mm1) =            Td0[GETBYTE(get1, rs24)] ^            Td1[GETBYTE(get0, rs16)] ^            Td2[GETBYTE(get3, rs 8)] ^            Td3[GETBYTE(tet2,     )]          */    AS2(    mov   esi, ebx                                              )    AS2(    shr   esi, 24                                               )    AS2(    mov   esi, DWORD PTR [ebp + esi*4]                          )                                                        AS2(    mov   edi, eax                                              )    AS2(    shr   edi, 16                                               )    AS2(    and   edi, 255                                              )    AS2(    xor   esi, DWORD PTR [ebp + 1024 + edi*4]                   )    AS2(    movzx edi, dh                                               )    AS2(    xor   esi, DWORD PTR [ebp + 2048 + edi*4]                   )    AS2(    movzx edi, cl                                               )    AS2(    xor   esi, DWORD PTR [ebp + 3072 + edi*4]                   )

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -