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

📄 aesopt.h

📁 老外写的加密库cryptlib(版本3.1)
💻 H
📖 第 1 页 / 共 3 页
字号:
  ^ tab[3][bval(vf(x,3,c),rf(3,c))])#define vf1(x,r,c)  (x)#define rf1(r,c)    (r)#define rf2(r,c)    ((8+r-c)&3)/* perform forward and inverse column mix operation on four bytes in long word x in *//* parallel. NOTE: x must be a simple variable, NOT an expression in these macros.  */#if defined(FM4_SET)    /* not currently used */#define fwd_mcol(x)     four_tables(x,t_use(f,m),vf1,rf1,0)#elif defined(FM1_SET)  /* not currently used */#define fwd_mcol(x)     one_table(x,upr,t_use(f,m),vf1,rf1,0)#else#define dec_fmvars      aes_32t g2#define fwd_mcol(x)     (g2 = gf_mulx(x), g2 ^ upr((x) ^ g2, 3) ^ upr((x), 2) ^ upr((x), 1))#endif#if defined(IM4_SET)#define inv_mcol(x)     four_tables(x,t_use(i,m),vf1,rf1,0)#elif defined(IM1_SET)#define inv_mcol(x)     one_table(x,upr,t_use(i,m),vf1,rf1,0)#else#define dec_imvars      aes_32t g2, g4, g9#define inv_mcol(x)     (g2 = gf_mulx(x), g4 = gf_mulx(g2), g9 = (x) ^ gf_mulx(g4), g4 ^= g9, \                        (x) ^ g2 ^ g4 ^ upr(g2 ^ g9, 3) ^ upr(g4, 2) ^ upr(g9, 1))#endif#if defined(FL4_SET)#define ls_box(x,c)     four_tables(x,t_use(f,l),vf1,rf2,c)#elif   defined(LS4_SET)#define ls_box(x,c)     four_tables(x,t_use(l,s),vf1,rf2,c)#elif defined(FL1_SET)#define ls_box(x,c)     one_table(x,upr,t_use(f,l),vf1,rf2,c)#elif defined(LS1_SET)#define ls_box(x,c)     one_table(x,upr,t_use(l,s),vf1,rf2,c)#else#define ls_box(x,c)     no_table(x,t_use(s,box),vf1,rf2,c)#endif#if defined(__cplusplus)extern "C"{#endif/*  If there are no global variables, the definitions here can be    used to put the AES tables in a structure so that a pointer    can then be added to the AES context to pass them to the AES    routines that need them.  If this facility is used, the calling    program has to ensure that this pointer is managed appropriately.    In particular, the value of the t_dec(in,it) item in the table    structure must be set to zero in order to ensure that the tables    are initialised. In practice the three code sequences in aeskey.c    that control the calls to gen_tabs() and the gen_tabs() routine    itself will have to be changed for a specific implementation. If    global variables are available it will generally be preferable to    use them with the precomputed FIXED_TABLES option that uses static    global tables.    The following defines can be used to control the way the tables    are defined, initialised and used in embedded environments that    require special features for these purposes    the 't_dec' construction is used to declare fixed table arrays    the 't_set' construction is used to set fixed table values    the 't_use' construction is used to access fixed table values    256 byte tables:        t_xxx(s,box)    => forward S box        t_xxx(i,box)    => inverse S box    256 32-bit word OR 4 x 256 32-bit word tables:        t_xxx(f,n)      => forward normal round        t_xxx(f,l)      => forward last round        t_xxx(i,n)      => inverse normal round        t_xxx(i,l)      => inverse last round        t_xxx(l,s)      => key schedule table        t_xxx(i,m)      => key schedule table    Other variables and tables:        t_xxx(r,c)      => the rcon table*/#define t_dec(m,n) t_##m##n#define t_set(m,n) t_##m##n#define t_use(m,n) t_##m##n#if defined(DO_TABLES)  /* declare and instantiate tables   *//*  finite field arithmetic operations for table generation */#if defined(FIXED_TABLES) || !defined(FF_TABLES)#define f2(x)   ((x<<1) ^ (((x>>7) & 1) * WPOLY))#define f4(x)   ((x<<2) ^ (((x>>6) & 1) * WPOLY) ^ (((x>>6) & 2) * WPOLY))#define f8(x)   ((x<<3) ^ (((x>>5) & 1) * WPOLY) ^ (((x>>5) & 2) * WPOLY) \                        ^ (((x>>5) & 4) * WPOLY))#define f3(x)   (f2(x) ^ x)#define f9(x)   (f8(x) ^ x)#define fb(x)   (f8(x) ^ f2(x) ^ x)#define fd(x)   (f8(x) ^ f4(x) ^ x)#define fe(x)   (f8(x) ^ f4(x) ^ f2(x))#else#define f2(x) ((x) ? pow[log[x] + 0x19] : 0)#define f3(x) ((x) ? pow[log[x] + 0x01] : 0)#define f9(x) ((x) ? pow[log[x] + 0xc7] : 0)#define fb(x) ((x) ? pow[log[x] + 0x68] : 0)#define fd(x) ((x) ? pow[log[x] + 0xee] : 0)#define fe(x) ((x) ? pow[log[x] + 0xdf] : 0)#define fi(x) ((x) ? pow[ 255 - log[x]] : 0)#endif#if defined(FIXED_TABLES)   /* declare and set values for static tables */#define sb_data(w) \    w(0x63), w(0x7c), w(0x77), w(0x7b), w(0xf2), w(0x6b), w(0x6f), w(0xc5),\    w(0x30), w(0x01), w(0x67), w(0x2b), w(0xfe), w(0xd7), w(0xab), w(0x76),\    w(0xca), w(0x82), w(0xc9), w(0x7d), w(0xfa), w(0x59), w(0x47), w(0xf0),\    w(0xad), w(0xd4), w(0xa2), w(0xaf), w(0x9c), w(0xa4), w(0x72), w(0xc0),\    w(0xb7), w(0xfd), w(0x93), w(0x26), w(0x36), w(0x3f), w(0xf7), w(0xcc),\    w(0x34), w(0xa5), w(0xe5), w(0xf1), w(0x71), w(0xd8), w(0x31), w(0x15),\    w(0x04), w(0xc7), w(0x23), w(0xc3), w(0x18), w(0x96), w(0x05), w(0x9a),\    w(0x07), w(0x12), w(0x80), w(0xe2), w(0xeb), w(0x27), w(0xb2), w(0x75),\    w(0x09), w(0x83), w(0x2c), w(0x1a), w(0x1b), w(0x6e), w(0x5a), w(0xa0),\    w(0x52), w(0x3b), w(0xd6), w(0xb3), w(0x29), w(0xe3), w(0x2f), w(0x84),\    w(0x53), w(0xd1), w(0x00), w(0xed), w(0x20), w(0xfc), w(0xb1), w(0x5b),\    w(0x6a), w(0xcb), w(0xbe), w(0x39), w(0x4a), w(0x4c), w(0x58), w(0xcf),\    w(0xd0), w(0xef), w(0xaa), w(0xfb), w(0x43), w(0x4d), w(0x33), w(0x85),\    w(0x45), w(0xf9), w(0x02), w(0x7f), w(0x50), w(0x3c), w(0x9f), w(0xa8),\    w(0x51), w(0xa3), w(0x40), w(0x8f), w(0x92), w(0x9d), w(0x38), w(0xf5),\    w(0xbc), w(0xb6), w(0xda), w(0x21), w(0x10), w(0xff), w(0xf3), w(0xd2),\    w(0xcd), w(0x0c), w(0x13), w(0xec), w(0x5f), w(0x97), w(0x44), w(0x17),\    w(0xc4), w(0xa7), w(0x7e), w(0x3d), w(0x64), w(0x5d), w(0x19), w(0x73),\    w(0x60), w(0x81), w(0x4f), w(0xdc), w(0x22), w(0x2a), w(0x90), w(0x88),\    w(0x46), w(0xee), w(0xb8), w(0x14), w(0xde), w(0x5e), w(0x0b), w(0xdb),\    w(0xe0), w(0x32), w(0x3a), w(0x0a), w(0x49), w(0x06), w(0x24), w(0x5c),\    w(0xc2), w(0xd3), w(0xac), w(0x62), w(0x91), w(0x95), w(0xe4), w(0x79),\    w(0xe7), w(0xc8), w(0x37), w(0x6d), w(0x8d), w(0xd5), w(0x4e), w(0xa9),\    w(0x6c), w(0x56), w(0xf4), w(0xea), w(0x65), w(0x7a), w(0xae), w(0x08),\    w(0xba), w(0x78), w(0x25), w(0x2e), w(0x1c), w(0xa6), w(0xb4), w(0xc6),\    w(0xe8), w(0xdd), w(0x74), w(0x1f), w(0x4b), w(0xbd), w(0x8b), w(0x8a),\    w(0x70), w(0x3e), w(0xb5), w(0x66), w(0x48), w(0x03), w(0xf6), w(0x0e),\    w(0x61), w(0x35), w(0x57), w(0xb9), w(0x86), w(0xc1), w(0x1d), w(0x9e),\    w(0xe1), w(0xf8), w(0x98), w(0x11), w(0x69), w(0xd9), w(0x8e), w(0x94),\    w(0x9b), w(0x1e), w(0x87), w(0xe9), w(0xce), w(0x55), w(0x28), w(0xdf),\    w(0x8c), w(0xa1), w(0x89), w(0x0d), w(0xbf), w(0xe6), w(0x42), w(0x68),\    w(0x41), w(0x99), w(0x2d), w(0x0f), w(0xb0), w(0x54), w(0xbb), w(0x16)#define isb_data(w) \    w(0x52), w(0x09), w(0x6a), w(0xd5), w(0x30), w(0x36), w(0xa5), w(0x38),\    w(0xbf), w(0x40), w(0xa3), w(0x9e), w(0x81), w(0xf3), w(0xd7), w(0xfb),\    w(0x7c), w(0xe3), w(0x39), w(0x82), w(0x9b), w(0x2f), w(0xff), w(0x87),\    w(0x34), w(0x8e), w(0x43), w(0x44), w(0xc4), w(0xde), w(0xe9), w(0xcb),\    w(0x54), w(0x7b), w(0x94), w(0x32), w(0xa6), w(0xc2), w(0x23), w(0x3d),\    w(0xee), w(0x4c), w(0x95), w(0x0b), w(0x42), w(0xfa), w(0xc3), w(0x4e),\    w(0x08), w(0x2e), w(0xa1), w(0x66), w(0x28), w(0xd9), w(0x24), w(0xb2),\    w(0x76), w(0x5b), w(0xa2), w(0x49), w(0x6d), w(0x8b), w(0xd1), w(0x25),\    w(0x72), w(0xf8), w(0xf6), w(0x64), w(0x86), w(0x68), w(0x98), w(0x16),\    w(0xd4), w(0xa4), w(0x5c), w(0xcc), w(0x5d), w(0x65), w(0xb6), w(0x92),\    w(0x6c), w(0x70), w(0x48), w(0x50), w(0xfd), w(0xed), w(0xb9), w(0xda),\    w(0x5e), w(0x15), w(0x46), w(0x57), w(0xa7), w(0x8d), w(0x9d), w(0x84),\    w(0x90), w(0xd8), w(0xab), w(0x00), w(0x8c), w(0xbc), w(0xd3), w(0x0a),\    w(0xf7), w(0xe4), w(0x58), w(0x05), w(0xb8), w(0xb3), w(0x45), w(0x06),\    w(0xd0), w(0x2c), w(0x1e), w(0x8f), w(0xca), w(0x3f), w(0x0f), w(0x02),\    w(0xc1), w(0xaf), w(0xbd), w(0x03), w(0x01), w(0x13), w(0x8a), w(0x6b),\    w(0x3a), w(0x91), w(0x11), w(0x41), w(0x4f), w(0x67), w(0xdc), w(0xea),\    w(0x97), w(0xf2), w(0xcf), w(0xce), w(0xf0), w(0xb4), w(0xe6), w(0x73),\    w(0x96), w(0xac), w(0x74), w(0x22), w(0xe7), w(0xad), w(0x35), w(0x85),\    w(0xe2), w(0xf9), w(0x37), w(0xe8), w(0x1c), w(0x75), w(0xdf), w(0x6e),\    w(0x47), w(0xf1), w(0x1a), w(0x71), w(0x1d), w(0x29), w(0xc5), w(0x89),\    w(0x6f), w(0xb7), w(0x62), w(0x0e), w(0xaa), w(0x18), w(0xbe), w(0x1b),\    w(0xfc), w(0x56), w(0x3e), w(0x4b), w(0xc6), w(0xd2), w(0x79), w(0x20),\    w(0x9a), w(0xdb), w(0xc0), w(0xfe), w(0x78), w(0xcd), w(0x5a), w(0xf4),\    w(0x1f), w(0xdd), w(0xa8), w(0x33), w(0x88), w(0x07), w(0xc7), w(0x31),\    w(0xb1), w(0x12), w(0x10), w(0x59), w(0x27), w(0x80), w(0xec), w(0x5f),\    w(0x60), w(0x51), w(0x7f), w(0xa9), w(0x19), w(0xb5), w(0x4a), w(0x0d),\    w(0x2d), w(0xe5), w(0x7a), w(0x9f), w(0x93), w(0xc9), w(0x9c), w(0xef),\    w(0xa0), w(0xe0), w(0x3b), w(0x4d), w(0xae), w(0x2a), w(0xf5), w(0xb0),\    w(0xc8), w(0xeb), w(0xbb), w(0x3c), w(0x83), w(0x53), w(0x99), w(0x61),\    w(0x17), w(0x2b), w(0x04), w(0x7e), w(0xba), w(0x77), w(0xd6), w(0x26),\    w(0xe1), w(0x69), w(0x14), w(0x63), w(0x55), w(0x21), w(0x0c), w(0x7d),#define mm_data(w) \    w(0x00), w(0x01), w(0x02), w(0x03), w(0x04), w(0x05), w(0x06), w(0x07),\    w(0x08), w(0x09), w(0x0a), w(0x0b), w(0x0c), w(0x0d), w(0x0e), w(0x0f),\    w(0x10), w(0x11), w(0x12), w(0x13), w(0x14), w(0x15), w(0x16), w(0x17),\    w(0x18), w(0x19), w(0x1a), w(0x1b), w(0x1c), w(0x1d), w(0x1e), w(0x1f),\    w(0x20), w(0x21), w(0x22), w(0x23), w(0x24), w(0x25), w(0x26), w(0x27),\    w(0x28), w(0x29), w(0x2a), w(0x2b), w(0x2c), w(0x2d), w(0x2e), w(0x2f),\    w(0x30), w(0x31), w(0x32), w(0x33), w(0x34), w(0x35), w(0x36), w(0x37),\    w(0x38), w(0x39), w(0x3a), w(0x3b), w(0x3c), w(0x3d), w(0x3e), w(0x3f),\    w(0x40), w(0x41), w(0x42), w(0x43), w(0x44), w(0x45), w(0x46), w(0x47),\    w(0x48), w(0x49), w(0x4a), w(0x4b), w(0x4c), w(0x4d), w(0x4e), w(0x4f),\    w(0x50), w(0x51), w(0x52), w(0x53), w(0x54), w(0x55), w(0x56), w(0x57),\    w(0x58), w(0x59), w(0x5a), w(0x5b), w(0x5c), w(0x5d), w(0x5e), w(0x5f),\    w(0x60), w(0x61), w(0x62), w(0x63), w(0x64), w(0x65), w(0x66), w(0x67),\    w(0x68), w(0x69), w(0x6a), w(0x6b), w(0x6c), w(0x6d), w(0x6e), w(0x6f),\    w(0x70), w(0x71), w(0x72), w(0x73), w(0x74), w(0x75), w(0x76), w(0x77),\    w(0x78), w(0x79), w(0x7a), w(0x7b), w(0x7c), w(0x7d), w(0x7e), w(0x7f),\    w(0x80), w(0x81), w(0x82), w(0x83), w(0x84), w(0x85), w(0x86), w(0x87),\    w(0x88), w(0x89), w(0x8a), w(0x8b), w(0x8c), w(0x8d), w(0x8e), w(0x8f),\    w(0x90), w(0x91), w(0x92), w(0x93), w(0x94), w(0x95), w(0x96), w(0x97),\    w(0x98), w(0x99), w(0x9a), w(0x9b), w(0x9c), w(0x9d), w(0x9e), w(0x9f),\    w(0xa0), w(0xa1), w(0xa2), w(0xa3), w(0xa4), w(0xa5), w(0xa6), w(0xa7),\    w(0xa8), w(0xa9), w(0xaa), w(0xab), w(0xac), w(0xad), w(0xae), w(0xaf),\    w(0xb0), w(0xb1), w(0xb2), w(0xb3), w(0xb4), w(0xb5), w(0xb6), w(0xb7),\    w(0xb8), w(0xb9), w(0xba), w(0xbb), w(0xbc), w(0xbd), w(0xbe), w(0xbf),\    w(0xc0), w(0xc1), w(0xc2), w(0xc3), w(0xc4), w(0xc5), w(0xc6), w(0xc7),\    w(0xc8), w(0xc9), w(0xca), w(0xcb), w(0xcc), w(0xcd), w(0xce), w(0xcf),\    w(0xd0), w(0xd1), w(0xd2), w(0xd3), w(0xd4), w(0xd5), w(0xd6), w(0xd7),\    w(0xd8), w(0xd9), w(0xda), w(0xdb), w(0xdc), w(0xdd), w(0xde), w(0xdf),\    w(0xe0), w(0xe1), w(0xe2), w(0xe3), w(0xe4), w(0xe5), w(0xe6), w(0xe7),\    w(0xe8), w(0xe9), w(0xea), w(0xeb), w(0xec), w(0xed), w(0xee), w(0xef),\    w(0xf0), w(0xf1), w(0xf2), w(0xf3), w(0xf4), w(0xf5), w(0xf6), w(0xf7),\    w(0xf8), w(0xf9), w(0xfa), w(0xfb), w(0xfc), w(0xfd), w(0xfe), w(0xff)#define h0(x)   (x)/*  These defines are used to ensure tables are generated in the    right format depending on the internal byte order required*/#define w0(p)   bytes2word(p, 0, 0, 0)#define w1(p)   bytes2word(0, p, 0, 0)#define w2(p)   bytes2word(0, 0, p, 0)#define w3(p)   bytes2word(0, 0, 0, p)#define u0(p)   bytes2word(f2(p), p, p, f3(p))#define u1(p)   bytes2word(f3(p), f2(p), p, p)#define u2(p)   bytes2word(p, f3(p), f2(p), p)#define u3(p)   bytes2word(p, p, f3(p), f2(p))#define v0(p)   bytes2word(fe(p), f9(p), fd(p), fb(p))#define v1(p)   bytes2word(fb(p), fe(p), f9(p), fd(p))#define v2(p)   bytes2word(fd(p), fb(p), fe(p), f9(p))#define v3(p)   bytes2word(f9(p), fd(p), fb(p), fe(p))const aes_32t t_dec(r,c)[RC_LENGTH] ={    w0(0x01), w0(0x02), w0(0x04), w0(0x08), w0(0x10),    w0(0x20), w0(0x40), w0(0x80), w0(0x1b), w0(0x36)};#define d_1(t,n,b,v) const t n[256]    =   { b(v##0) }#define d_4(t,n,b,v) const t n[4][256] = { { b(v##0) }, { b(v##1) }, { b(v##2) }, { b(v##3) } }#else   /* declare and instantiate tables for dynamic value generation in in tab.c  */aes_32t t_dec(r,c)[RC_LENGTH];#define d_1(t,n,b,v) t  n[256]#define d_4(t,n,b,v) t  n[4][256]#endif#else   /* declare tables without instantiation */#if defined(FIXED_TABLES)extern const aes_32t t_dec(r,c)[RC_LENGTH];#if defined(_MSC_VER) && defined(TABLE_ALIGN)#define d_1(t,n,b,v) extern __declspec(align(TABLE_ALIGN)) const t  n[256]#define d_4(t,n,b,v) extern __declspec(align(TABLE_ALIGN)) const t  n[4][256]#else#define d_1(t,n,b,v) extern const t  n[256]#define d_4(t,n,b,v) extern const t  n[4][256]#endif#elseextern aes_32t t_dec(r,c)[RC_LENGTH];#if defined(_MSC_VER) && defined(TABLE_ALIGN)#define d_1(t,n,b,v) extern __declspec(align(TABLE_ALIGN)) t  n[256]#define d_4(t,n,b,v) extern __declspec(align(TABLE_ALIGN)) t  n[4][256]#else#define d_1(t,n,b,v) extern t  n[256]#define d_4(t,n,b,v) extern t  n[4][256]#endif#endif#endif#ifdef  SBX_SET    d_1(aes_08t, t_dec(s,box), sb_data, h);#endif#ifdef  ISB_SET    d_1(aes_08t, t_dec(i,box), isb_data, h);#endif#ifdef  FT1_SET    d_1(aes_32t, t_dec(f,n), sb_data, u);#endif#ifdef  FT4_SET    d_4(aes_32t, t_dec(f,n), sb_data, u);#endif#ifdef  FL1_SET    d_1(aes_32t, t_dec(f,l), sb_data, w);#endif#ifdef  FL4_SET    d_4(aes_32t, t_dec(f,l), sb_data, w);#endif#ifdef  IT1_SET    d_1(aes_32t, t_dec(i,n), isb_data, v);#endif#ifdef  IT4_SET    d_4(aes_32t, t_dec(i,n), isb_data, v);#endif#ifdef  IL1_SET    d_1(aes_32t, t_dec(i,l), isb_data, w);#endif#ifdef  IL4_SET    d_4(aes_32t, t_dec(i,l), isb_data, w);#endif#ifdef  LS1_SET#ifdef  FL1_SET#undef  LS1_SET#else    d_1(aes_32t, t_dec(l,s), sb_data, w);#endif#endif#ifdef  LS4_SET#ifdef  FL4_SET#undef  LS4_SET#else    d_4(aes_32t, t_dec(l,s), sb_data, w);#endif#endif#ifdef  IM1_SET    d_1(aes_32t, t_dec(i,m), mm_data, v);#endif#ifdef  IM4_SET    d_4(aes_32t, t_dec(i,m), mm_data, v);#endif#if defined(__cplusplus)}#endif#endif

⌨️ 快捷键说明

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