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

📄 padlock_aes.c

📁 A Brief Guide to User/Hacker of VIA Padlock SDK
💻 C
📖 第 1 页 / 共 2 页
字号:
/*
 * Copyright 1998-2004 VIA Technologies, Inc. All Rights Reserved.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the "Software"),
 * to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute, sub license,
 * and/or sell copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice (including the
 * next paragraph) shall be included in all copies or substantial portions
 * of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
 * VIA, AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 * DEALINGS IN THE SOFTWARE.
 */

#include "padlock.h"
#include "via_ace.h"

#include <stdio.h>
#include <memory.h>

// VIA ACE hardware control words constant
static int NEH_GENKEY_ENCRYPT_128 = NEH_ENCRYPT + NEH_GEN_KEY + NEH_KEY128;
static int NEH_LDKEY_ENCRYPT_192 = NEH_ENCRYPT + NEH_LOAD_KEY + NEH_KEY192;
static int NEH_LDKEY_ENCRYPT_256 = NEH_ENCRYPT + NEH_LOAD_KEY + NEH_KEY256;

static int NEH_GENKEY_DECRYPT_128 = NEH_DECRYPT + NEH_GEN_KEY + NEH_KEY128;
static int NEH_LDKEY_DECRYPT_192 = NEH_DECRYPT + NEH_LOAD_KEY + NEH_KEY192;
static int NEH_LDKEY_DECRYPT_256 = NEH_DECRYPT + NEH_LOAD_KEY + NEH_KEY256;

// tables for key manipulation
static unsigned char pow_tab[256]= {
 0x1,   0x3,   0x5,   0xf,   0x11,  0x33,  0x55,  0xff, 
 0x1a,  0x2e,  0x72,  0x96,  0xa1,  0xf8,  0x13,  0x35, 
 0x5f,  0xe1,  0x38,  0x48,  0xd8,  0x73,  0x95,  0xa4, 
 0xf7,  0x2,   0x6,   0xa,   0x1e,  0x22,  0x66,  0xaa, 
 0xe5,  0x34,  0x5c,  0xe4,  0x37,  0x59,  0xeb,  0x26, 
 0x6a,  0xbe,  0xd9,  0x70,  0x90,  0xab,  0xe6,  0x31, 
 0x53,  0xf5,  0x4,   0xc,   0x14,  0x3c,  0x44,  0xcc, 
 0x4f,  0xd1,  0x68,  0xb8,  0xd3,  0x6e,  0xb2,  0xcd, 
 0x4c,  0xd4,  0x67,  0xa9,  0xe0,  0x3b,  0x4d,  0xd7, 
 0x62,  0xa6,  0xf1,  0x8,   0x18,  0x28,  0x78,  0x88, 
 0x83,  0x9e,  0xb9,  0xd0,  0x6b,  0xbd,  0xdc,  0x7f, 
 0x81,  0x98,  0xb3,  0xce,  0x49,  0xdb,  0x76,  0x9a, 
 0xb5,  0xc4,  0x57,  0xf9,  0x10,  0x30,  0x50,  0xf0, 
 0xb,   0x1d,  0x27,  0x69,  0xbb,  0xd6,  0x61,  0xa3, 
 0xfe,  0x19,  0x2b,  0x7d,  0x87,  0x92,  0xad,  0xec, 
 0x2f,  0x71,  0x93,  0xae,  0xe9,  0x20,  0x60,  0xa0, 
 0xfb,  0x16,  0x3a,  0x4e,  0xd2,  0x6d,  0xb7,  0xc2, 
 0x5d,  0xe7,  0x32,  0x56,  0xfa,  0x15,  0x3f,  0x41, 
 0xc3,  0x5e,  0xe2,  0x3d,  0x47,  0xc9,  0x40,  0xc0, 
 0x5b,  0xed,  0x2c,  0x74,  0x9c,  0xbf,  0xda,  0x75, 
 0x9f,  0xba,  0xd5,  0x64,  0xac,  0xef,  0x2a,  0x7e, 
 0x82,  0x9d,  0xbc,  0xdf,  0x7a,  0x8e,  0x89,  0x80, 
 0x9b,  0xb6,  0xc1,  0x58,  0xe8,  0x23,  0x65,  0xaf, 
 0xea,  0x25,  0x6f,  0xb1,  0xc8,  0x43,  0xc5,  0x54, 
 0xfc,  0x1f,  0x21,  0x63,  0xa5,  0xf4,  0x7,   0x9, 
 0x1b,  0x2d,  0x77,  0x99,  0xb0,  0xcb,  0x46,  0xca, 
 0x45,  0xcf,  0x4a,  0xde,  0x79,  0x8b,  0x86,  0x91, 
 0xa8,  0xe3,  0x3e,  0x42,  0xc6,  0x51,  0xf3,  0xe, 
 0x12,  0x36,  0x5a,  0xee,  0x29,  0x7b,  0x8d,  0x8c, 
 0x8f,  0x8a,  0x85,  0x94,  0xa7,  0xf2,  0xd,   0x17, 
 0x39,  0x4b,  0xdd,  0x7c,  0x84,  0x97,  0xa2,  0xfd, 
 0x1c,  0x24,  0x6c,  0xb4,  0xc7,  0x52,  0xf6,  0x1 };

static unsigned char log_tab[256] = {
 0x0,   0x0,   0x19,  0x1,   0x32,  0x2,   0x1a,  0xc6, 
 0x4b,  0xc7,  0x1b,  0x68,  0x33,  0xee,  0xdf,  0x3, 
 0x64,  0x4,   0xe0,  0xe,   0x34,  0x8d,  0x81,  0xef, 
 0x4c,  0x71,  0x8,   0xc8,  0xf8,  0x69,  0x1c,  0xc1, 
 0x7d,  0xc2,  0x1d,  0xb5,  0xf9,  0xb9,  0x27,  0x6a, 
 0x4d,  0xe4,  0xa6,  0x72,  0x9a,  0xc9,  0x9,   0x78, 
 0x65,  0x2f,  0x8a,  0x5,   0x21,  0xf,   0xe1,  0x24, 
 0x12,  0xf0,  0x82,  0x45,  0x35,  0x93,  0xda,  0x8e, 
 0x96,  0x8f,  0xdb,  0xbd,  0x36,  0xd0,  0xce,  0x94, 
 0x13,  0x5c,  0xd2,  0xf1,  0x40,  0x46,  0x83,  0x38, 
 0x66,  0xdd,  0xfd,  0x30,  0xbf,  0x6,   0x8b,  0x62, 
 0xb3,  0x25,  0xe2,  0x98,  0x22,  0x88,  0x91,  0x10, 
 0x7e,  0x6e,  0x48,  0xc3,  0xa3,  0xb6,  0x1e,  0x42, 
 0x3a,  0x6b,  0x28,  0x54,  0xfa,  0x85,  0x3d,  0xba, 
 0x2b,  0x79,  0xa,   0x15,  0x9b,  0x9f,  0x5e,  0xca, 
 0x4e,  0xd4,  0xac,  0xe5,  0xf3,  0x73,  0xa7,  0x57, 
 0xaf,  0x58,  0xa8,  0x50,  0xf4,  0xea,  0xd6,  0x74, 
 0x4f,  0xae,  0xe9,  0xd5,  0xe7,  0xe6,  0xad,  0xe8, 
 0x2c,  0xd7,  0x75,  0x7a,  0xeb,  0x16,  0xb,   0xf5, 
 0x59,  0xcb,  0x5f,  0xb0,  0x9c,  0xa9,  0x51,  0xa0, 
 0x7f,  0xc,   0xf6,  0x6f,  0x17,  0xc4,  0x49,  0xec, 
 0xd8,  0x43,  0x1f,  0x2d,  0xa4,  0x76,  0x7b,  0xb7, 
 0xcc,  0xbb,  0x3e,  0x5a,  0xfb,  0x60,  0xb1,  0x86, 
 0x3b,  0x52,  0xa1,  0x6c,  0xaa,  0x55,  0x29,  0x9d, 
 0x97,  0xb2,  0x87,  0x90,  0x61,  0xbe,  0xdc,  0xfc, 
 0xbc,  0x95,  0xcf,  0xcd,  0x37,  0x3f,  0x5b,  0xd1, 
 0x53,  0x39,  0x84,  0x3c,  0x41,  0xa2,  0x6d,  0x47, 
 0x14,  0x2a,  0x9e,  0x5d,  0x56,  0xf2,  0xd3,  0xab, 
 0x44,  0x11,  0x92,  0xd9,  0x23,  0x20,  0x2e,  0x89, 
 0xb4,  0x7c,  0xb8,  0x26,  0x77,  0x99,  0xe3,  0xa5, 
 0x67,  0x4a,  0xed,  0xde,  0xc5,  0x31,  0xfe,  0x18, 
 0xd,   0x63,  0x8c,  0x80,  0xc0,  0xf7,  0x70,  0x7 };

static unsigned int rco_tab[10] = { 0x1,  0x2,  0x4,  0x8,  0x10,  0x20,  0x40,  0x80, 0x1b,  0x36 };

static unsigned int fl_tab[4][256]={
{0x63,  0x7c,  0x77,  0x7b,  0xf2,  0x6b,  0x6f,  0xc5, 
 0x30,  0x1,   0x67,  0x2b,  0xfe,  0xd7,  0xab,  0x76, 
 0xca,  0x82,  0xc9,  0x7d,  0xfa,  0x59,  0x47,  0xf0, 
 0xad,  0xd4,  0xa2,  0xaf,  0x9c,  0xa4,  0x72,  0xc0, 
 0xb7,  0xfd,  0x93,  0x26,  0x36,  0x3f,  0xf7,  0xcc, 
 0x34,  0xa5,  0xe5,  0xf1,  0x71,  0xd8,  0x31,  0x15, 
 0x4,   0xc7,  0x23,  0xc3,  0x18,  0x96,  0x5,   0x9a, 
 0x7,   0x12,  0x80,  0xe2,  0xeb,  0x27,  0xb2,  0x75, 
 0x9,   0x83,  0x2c,  0x1a,  0x1b,  0x6e,  0x5a,  0xa0, 
 0x52,  0x3b,  0xd6,  0xb3,  0x29,  0xe3,  0x2f,  0x84, 
 0x53,  0xd1,  0x0,   0xed,  0x20,  0xfc,  0xb1,  0x5b, 
 0x6a,  0xcb,  0xbe,  0x39,  0x4a,  0x4c,  0x58,  0xcf, 
 0xd0,  0xef,  0xaa,  0xfb,  0x43,  0x4d,  0x33,  0x85, 
 0x45,  0xf9,  0x2,   0x7f,  0x50,  0x3c,  0x9f,  0xa8, 
 0x51,  0xa3,  0x40,  0x8f,  0x92,  0x9d,  0x38,  0xf5, 
 0xbc,  0xb6,  0xda,  0x21,  0x10,  0xff,  0xf3,  0xd2, 
 0xcd,  0xc,   0x13,  0xec,  0x5f,  0x97,  0x44,  0x17, 
 0xc4,  0xa7,  0x7e,  0x3d,  0x64,  0x5d,  0x19,  0x73, 
 0x60,  0x81,  0x4f,  0xdc,  0x22,  0x2a,  0x90,  0x88, 
 0x46,  0xee,  0xb8,  0x14,  0xde,  0x5e,  0xb,   0xdb, 
 0xe0,  0x32,  0x3a,  0xa,   0x49,  0x6,   0x24,  0x5c, 
 0xc2,  0xd3,  0xac,  0x62,  0x91,  0x95,  0xe4,  0x79, 
 0xe7,  0xc8,  0x37,  0x6d,  0x8d,  0xd5,  0x4e,  0xa9, 
 0x6c,  0x56,  0xf4,  0xea,  0x65,  0x7a,  0xae,  0x8, 
 0xba,  0x78,  0x25,  0x2e,  0x1c,  0xa6,  0xb4,  0xc6, 
 0xe8,  0xdd,  0x74,  0x1f,  0x4b,  0xbd,  0x8b,  0x8a, 
 0x70,  0x3e,  0xb5,  0x66,  0x48,  0x3,   0xf6,  0xe, 
 0x61,  0x35,  0x57,  0xb9,  0x86,  0xc1,  0x1d,  0x9e, 
 0xe1,  0xf8,  0x98,  0x11,  0x69,  0xd9,  0x8e,  0x94, 
 0x9b,  0x1e,  0x87,  0xe9,  0xce,  0x55,  0x28,  0xdf, 
 0x8c,  0xa1,  0x89,  0xd,   0xbf,  0xe6,  0x42,  0x68, 
 0x41,  0x99,  0x2d,  0xf,   0xb0,  0x54,  0xbb,  0x16 },

{0x6300,  0x7c00,  0x7700,  0x7b00,  0xf200,  0x6b00,  0x6f00,  0xc500, 
 0x3000,  0x100,   0x6700,  0x2b00,  0xfe00,  0xd700,  0xab00,  0x7600, 
 0xca00,  0x8200,  0xc900,  0x7d00,  0xfa00,  0x5900,  0x4700,  0xf000, 
 0xad00,  0xd400,  0xa200,  0xaf00,  0x9c00,  0xa400,  0x7200,  0xc000, 
 0xb700,  0xfd00,  0x9300,  0x2600,  0x3600,  0x3f00,  0xf700,  0xcc00, 
 0x3400,  0xa500,  0xe500,  0xf100,  0x7100,  0xd800,  0x3100,  0x1500, 
 0x400,   0xc700,  0x2300,  0xc300,  0x1800,  0x9600,  0x500,   0x9a00, 
 0x700,   0x1200,  0x8000,  0xe200,  0xeb00,  0x2700,  0xb200,  0x7500, 
 0x900,   0x8300,  0x2c00,  0x1a00,  0x1b00,  0x6e00,  0x5a00,  0xa000, 
 0x5200,  0x3b00,  0xd600,  0xb300,  0x2900,  0xe300,  0x2f00,  0x8400, 
 0x5300,  0xd100,  0x0,     0xed00,  0x2000,  0xfc00,  0xb100,  0x5b00, 
 0x6a00,  0xcb00,  0xbe00,  0x3900,  0x4a00,  0x4c00,  0x5800,  0xcf00, 
 0xd000,  0xef00,  0xaa00,  0xfb00,  0x4300,  0x4d00,  0x3300,  0x8500, 
 0x4500,  0xf900,  0x200,   0x7f00,  0x5000,  0x3c00,  0x9f00,  0xa800, 
 0x5100,  0xa300,  0x4000,  0x8f00,  0x9200,  0x9d00,  0x3800,  0xf500, 
 0xbc00,  0xb600,  0xda00,  0x2100,  0x1000,  0xff00,  0xf300,  0xd200, 
 0xcd00,  0xc00,   0x1300,  0xec00,  0x5f00,  0x9700,  0x4400,  0x1700, 
 0xc400,  0xa700,  0x7e00,  0x3d00,  0x6400,  0x5d00,  0x1900,  0x7300, 
 0x6000,  0x8100,  0x4f00,  0xdc00,  0x2200,  0x2a00,  0x9000,  0x8800, 
 0x4600,  0xee00,  0xb800,  0x1400,  0xde00,  0x5e00,  0xb00,   0xdb00, 
 0xe000,  0x3200,  0x3a00,  0xa00,   0x4900,  0x600,   0x2400,  0x5c00, 
 0xc200,  0xd300,  0xac00,  0x6200,  0x9100,  0x9500,  0xe400,  0x7900, 
 0xe700,  0xc800,  0x3700,  0x6d00,  0x8d00,  0xd500,  0x4e00,  0xa900, 
 0x6c00,  0x5600,  0xf400,  0xea00,  0x6500,  0x7a00,  0xae00,  0x800, 
 0xba00,  0x7800,  0x2500,  0x2e00,  0x1c00,  0xa600,  0xb400,  0xc600, 
 0xe800,  0xdd00,  0x7400,  0x1f00,  0x4b00,  0xbd00,  0x8b00,  0x8a00, 
 0x7000,  0x3e00,  0xb500,  0x6600,  0x4800,  0x300,   0xf600,  0xe00, 
 0x6100,  0x3500,  0x5700,  0xb900,  0x8600,  0xc100,  0x1d00,  0x9e00, 
 0xe100,  0xf800,  0x9800,  0x1100,  0x6900,  0xd900,  0x8e00,  0x9400, 
 0x9b00,  0x1e00,  0x8700,  0xe900,  0xce00,  0x5500,  0x2800,  0xdf00, 
 0x8c00,  0xa100,  0x8900,  0xd00,   0xbf00,  0xe600,  0x4200,  0x6800, 
 0x4100,  0x9900,  0x2d00,  0xf00,   0xb000,  0x5400,  0xbb00,  0x1600 },

{0x630000,  0x7c0000,  0x770000,  0x7b0000,  0xf20000,  0x6b0000,  0x6f0000,  0xc50000, 
 0x300000,  0x10000,   0x670000,  0x2b0000,  0xfe0000,  0xd70000,  0xab0000,  0x760000, 
 0xca0000,  0x820000,  0xc90000,  0x7d0000,  0xfa0000,  0x590000,  0x470000,  0xf00000, 
 0xad0000,  0xd40000,  0xa20000,  0xaf0000,  0x9c0000,  0xa40000,  0x720000,  0xc00000, 
 0xb70000,  0xfd0000,  0x930000,  0x260000,  0x360000,  0x3f0000,  0xf70000,  0xcc0000, 
 0x340000,  0xa50000,  0xe50000,  0xf10000,  0x710000,  0xd80000,  0x310000,  0x150000, 
 0x40000,   0xc70000,  0x230000,  0xc30000,  0x180000,  0x960000,  0x50000,   0x9a0000, 
 0x70000,   0x120000,  0x800000,  0xe20000,  0xeb0000,  0x270000,  0xb20000,  0x750000, 
 0x90000,   0x830000,  0x2c0000,  0x1a0000,  0x1b0000,  0x6e0000,  0x5a0000,  0xa00000, 
 0x520000,  0x3b0000,  0xd60000,  0xb30000,  0x290000,  0xe30000,  0x2f0000,  0x840000, 
 0x530000,  0xd10000,  0x0,       0xed0000,  0x200000,  0xfc0000,  0xb10000,  0x5b0000, 
 0x6a0000,  0xcb0000,  0xbe0000,  0x390000,  0x4a0000,  0x4c0000,  0x580000,  0xcf0000, 
 0xd00000,  0xef0000,  0xaa0000,  0xfb0000,  0x430000,  0x4d0000,  0x330000,  0x850000, 
 0x450000,  0xf90000,  0x20000,   0x7f0000,  0x500000,  0x3c0000,  0x9f0000,  0xa80000, 
 0x510000,  0xa30000,  0x400000,  0x8f0000,  0x920000,  0x9d0000,  0x380000,  0xf50000, 
 0xbc0000,  0xb60000,  0xda0000,  0x210000,  0x100000,  0xff0000,  0xf30000,  0xd20000, 
 0xcd0000,  0xc0000,   0x130000,  0xec0000,  0x5f0000,  0x970000,  0x440000,  0x170000, 
 0xc40000,  0xa70000,  0x7e0000,  0x3d0000,  0x640000,  0x5d0000,  0x190000,  0x730000, 
 0x600000,  0x810000,  0x4f0000,  0xdc0000,  0x220000,  0x2a0000,  0x900000,  0x880000, 
 0x460000,  0xee0000,  0xb80000,  0x140000,  0xde0000,  0x5e0000,  0xb0000,   0xdb0000, 
 0xe00000,  0x320000,  0x3a0000,  0xa0000,   0x490000,  0x60000,   0x240000,  0x5c0000, 
 0xc20000,  0xd30000,  0xac0000,  0x620000,  0x910000,  0x950000,  0xe40000,  0x790000, 
 0xe70000,  0xc80000,  0x370000,  0x6d0000,  0x8d0000,  0xd50000,  0x4e0000,  0xa90000, 
 0x6c0000,  0x560000,  0xf40000,  0xea0000,  0x650000,  0x7a0000,  0xae0000,  0x80000, 
 0xba0000,  0x780000,  0x250000,  0x2e0000,  0x1c0000,  0xa60000,  0xb40000,  0xc60000, 
 0xe80000,  0xdd0000,  0x740000,  0x1f0000,  0x4b0000,  0xbd0000,  0x8b0000,  0x8a0000, 
 0x700000,  0x3e0000,  0xb50000,  0x660000,  0x480000,  0x30000,   0xf60000,  0xe0000, 
 0x610000,  0x350000,  0x570000,  0xb90000,  0x860000,  0xc10000,  0x1d0000,  0x9e0000, 
 0xe10000,  0xf80000,  0x980000,  0x110000,  0x690000,  0xd90000,  0x8e0000,  0x940000, 
 0x9b0000,  0x1e0000,  0x870000,  0xe90000,  0xce0000,  0x550000,  0x280000,  0xdf0000, 
 0x8c0000,  0xa10000,  0x890000,  0xd0000,   0xbf0000,  0xe60000,  0x420000,  0x680000, 
 0x410000,  0x990000,  0x2d0000,  0xf0000,   0xb00000,  0x540000,  0xbb0000,  0x160000 },

{0x63000000,  0x7c000000,  0x77000000,  0x7b000000,  0xf2000000,  0x6b000000,  0x6f000000,  0xc5000000, 
 0x30000000,  0x1000000,   0x67000000,  0x2b000000,  0xfe000000,  0xd7000000,  0xab000000,  0x76000000, 
 0xca000000,  0x82000000,  0xc9000000,  0x7d000000,  0xfa000000,  0x59000000,  0x47000000,  0xf0000000, 
 0xad000000,  0xd4000000,  0xa2000000,  0xaf000000,  0x9c000000,  0xa4000000,  0x72000000,  0xc0000000, 
 0xb7000000,  0xfd000000,  0x93000000,  0x26000000,  0x36000000,  0x3f000000,  0xf7000000,  0xcc000000, 
 0x34000000,  0xa5000000,  0xe5000000,  0xf1000000,  0x71000000,  0xd8000000,  0x31000000,  0x15000000, 
 0x4000000,   0xc7000000,  0x23000000,  0xc3000000,  0x18000000,  0x96000000,  0x5000000,   0x9a000000, 
 0x7000000,   0x12000000,  0x80000000,  0xe2000000,  0xeb000000,  0x27000000,  0xb2000000,  0x75000000, 
 0x9000000,   0x83000000,  0x2c000000,  0x1a000000,  0x1b000000,  0x6e000000,  0x5a000000,  0xa0000000, 
 0x52000000,  0x3b000000,  0xd6000000,  0xb3000000,  0x29000000,  0xe3000000,  0x2f000000,  0x84000000, 
 0x53000000,  0xd1000000,  0x0,         0xed000000,  0x20000000,  0xfc000000,  0xb1000000,  0x5b000000, 
 0x6a000000,  0xcb000000,  0xbe000000,  0x39000000,  0x4a000000,  0x4c000000,  0x58000000,  0xcf000000, 
 0xd0000000,  0xef000000,  0xaa000000,  0xfb000000,  0x43000000,  0x4d000000,  0x33000000,  0x85000000, 
 0x45000000,  0xf9000000,  0x2000000,   0x7f000000,  0x50000000,  0x3c000000,  0x9f000000,  0xa8000000, 
 0x51000000,  0xa3000000,  0x40000000,  0x8f000000,  0x92000000,  0x9d000000,  0x38000000,  0xf5000000, 
 0xbc000000,  0xb6000000,  0xda000000,  0x21000000,  0x10000000,  0xff000000,  0xf3000000,  0xd2000000, 
 0xcd000000,  0xc000000,   0x13000000,  0xec000000,  0x5f000000,  0x97000000,  0x44000000,  0x17000000, 
 0xc4000000,  0xa7000000,  0x7e000000,  0x3d000000,  0x64000000,  0x5d000000,  0x19000000,  0x73000000, 
 0x60000000,  0x81000000,  0x4f000000,  0xdc000000,  0x22000000,  0x2a000000,  0x90000000,  0x88000000, 
 0x46000000,  0xee000000,  0xb8000000,  0x14000000,  0xde000000,  0x5e000000,  0xb000000,   0xdb000000, 
 0xe0000000,  0x32000000,  0x3a000000,  0xa000000,   0x49000000,  0x6000000,   0x24000000,  0x5c000000, 
 0xc2000000,  0xd3000000,  0xac000000,  0x62000000,  0x91000000,  0x95000000,  0xe4000000,  0x79000000, 
 0xe7000000,  0xc8000000,  0x37000000,  0x6d000000,  0x8d000000,  0xd5000000,  0x4e000000,  0xa9000000, 
 0x6c000000,  0x56000000,  0xf4000000,  0xea000000,  0x65000000,  0x7a000000,  0xae000000,  0x8000000, 
 0xba000000,  0x78000000,  0x25000000,  0x2e000000,  0x1c000000,  0xa6000000,  0xb4000000,  0xc6000000, 
 0xe8000000,  0xdd000000,  0x74000000,  0x1f000000,  0x4b000000,  0xbd000000,  0x8b000000,  0x8a000000, 
 0x70000000,  0x3e000000,  0xb5000000,  0x66000000,  0x48000000,  0x3000000,   0xf6000000,  0xe000000, 
 0x61000000,  0x35000000,  0x57000000,  0xb9000000,  0x86000000,  0xc1000000,  0x1d000000,  0x9e000000, 
 0xe1000000,  0xf8000000,  0x98000000,  0x11000000,  0x69000000,  0xd9000000,  0x8e000000,  0x94000000, 
 0x9b000000,  0x1e000000,  0x87000000,  0xe9000000,  0xce000000,  0x55000000,  0x28000000,  0xdf000000, 
 0x8c000000,  0xa1000000,  0x89000000,  0xd000000,   0xbf000000,  0xe6000000,  0x42000000,  0x68000000, 
 0x41000000,  0x99000000,  0x2d000000,  0xf000000,   0xb0000000,  0x54000000,  0xbb000000,  0x16000000 }
};

static inline 
unsigned int rotr(const unsigned int x, const unsigned bits)
{
	const unsigned n = bits % 32;
	return (x >> n) | (x << (32 - n));
}

static inline 
unsigned int rotl(const unsigned int x, const unsigned bits)
{
	const unsigned n = bits % 32;
	return (x << n) | (x >> (32 - n));
}

static inline unsigned char
via_byte(const unsigned int x, const unsigned n)
{
	return x >> (n << 3);
}

static inline unsigned char
f_mult (unsigned char m, unsigned char n)
{
	unsigned char x = log_tab[m];
	unsigned char y = x + log_tab[n];

	return pow_tab[y + (y < x ? 1 : 0)];
}

#define ff_mult(a,b)    (a && b ? f_mult(a, b) : 0)

#define ls_box(x)	( fl_tab[0][via_byte(x, 0)] ^ fl_tab[1][via_byte(x, 1)] ^ fl_tab[2][via_byte(x, 2)] ^ fl_tab[3][via_byte(x, 3)] )

#define star_x(x) (((x) & 0x7f7f7f7f) << 1) ^ ((((x) & 0x80808080) >> 7) * 0x1b)

#define imix_col(y,x)       \
    u   = star_x(x);        \
    v   = star_x(u);        \
    w   = star_x(v);        \
    t   = w ^ (x);          \
   (y)  = u ^ v ^ w;        \
   (y) ^= rotr(u ^ t,  8) ^ rotr(v ^ t, 16) ^ rotr(t,24)

#define E_KEY ctx->encrypt_extended_key
#define D_KEY ctx->decrypt_extended_key

///////////////////////////////////////////////////////////////////////////////////////////////////
// Padlock SDK API

AES_RESULT
padlock_aes_setkey(struct ace_aes_context *ctx, const unsigned char *key, KEY_LENGTH key_len)
{
    int i, t, u, v, w;
	int real_key_len,rounds;
	int m, n;
	unsigned int exch;

⌨️ 快捷键说明

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