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

📄 aesfastengine.java

📁 kmlnjlkj nlkjlkjkljl okopokipoipo oipipipo i
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
    private static final int[] Tinv2 =    {     0xf45150a7, 0x417e5365, 0x171ac3a4, 0x273a965e, 0xab3bcb6b,      0x9d1ff145, 0xfaacab58, 0xe34b9303, 0x302055fa, 0x76adf66d,      0xcc889176, 0x02f5254c, 0xe54ffcd7, 0x2ac5d7cb, 0x35268044,      0x62b58fa3, 0xb1de495a, 0xba25671b, 0xea45980e, 0xfe5de1c0,      0x2fc30275, 0x4c8112f0, 0x468da397, 0xd36bc6f9, 0x8f03e75f,      0x9215959c, 0x6dbfeb7a, 0x5295da59, 0xbed42d83, 0x7458d321,      0xe0492969, 0xc98e44c8, 0xc2756a89, 0x8ef47879, 0x58996b3e,      0xb927dd71, 0xe1beb64f, 0x88f017ad, 0x20c966ac, 0xce7db43a,      0xdf63184a, 0x1ae58231, 0x51976033, 0x5362457f, 0x64b1e077,      0x6bbb84ae, 0x81fe1ca0, 0x08f9942b, 0x48705868, 0x458f19fd,      0xde94876c, 0x7b52b7f8, 0x73ab23d3, 0x4b72e202, 0x1fe3578f,      0x55662aab, 0xebb20728, 0xb52f03c2, 0xc5869a7b, 0x37d3a508,      0x2830f287, 0xbf23b2a5, 0x0302ba6a, 0x16ed5c82, 0xcf8a2b1c,      0x79a792b4, 0x07f3f0f2, 0x694ea1e2, 0xda65cdf4, 0x0506d5be,      0x34d11f62, 0xa6c48afe, 0x2e349d53, 0xf3a2a055, 0x8a0532e1,      0xf6a475eb, 0x830b39ec, 0x6040aaef, 0x715e069f, 0x6ebd5110,      0x213ef98a, 0xdd963d06, 0x3eddae05, 0xe64d46bd, 0x5491b58d,      0xc471055d, 0x06046fd4, 0x5060ff15, 0x981924fb, 0xbdd697e9,      0x4089cc43, 0xd967779e, 0xe8b0bd42, 0x8907888b, 0x19e7385b,      0xc879dbee, 0x7ca1470a, 0x427ce90f, 0x84f8c91e, 0x00000000,      0x80098386, 0x2b3248ed, 0x111eac70, 0x5a6c4e72, 0x0efdfbff,      0x850f5638, 0xae3d1ed5, 0x2d362739, 0x0f0a64d9, 0x5c6821a6,      0x5b9bd154, 0x36243a2e, 0x0a0cb167, 0x57930fe7, 0xeeb4d296,      0x9b1b9e91, 0xc0804fc5, 0xdc61a220, 0x775a694b, 0x121c161a,      0x93e20aba, 0xa0c0e52a, 0x223c43e0, 0x1b121d17, 0x090e0b0d,      0x8bf2adc7, 0xb62db9a8, 0x1e14c8a9, 0xf1578519, 0x75af4c07,      0x99eebbdd, 0x7fa3fd60, 0x01f79f26, 0x725cbcf5, 0x6644c53b,      0xfb5b347e, 0x438b7629, 0x23cbdcc6, 0xedb668fc, 0xe4b863f1,      0x31d7cadc, 0x63421085, 0x97134022, 0xc6842011, 0x4a857d24,      0xbbd2f83d, 0xf9ae1132, 0x29c76da1, 0x9e1d4b2f, 0xb2dcf330,      0x860dec52, 0xc177d0e3, 0xb32b6c16, 0x70a999b9, 0x9411fa48,      0xe9472264, 0xfca8c48c, 0xf0a01a3f, 0x7d56d82c, 0x3322ef90,      0x4987c74e, 0x38d9c1d1, 0xca8cfea2, 0xd498360b, 0xf5a6cf81,      0x7aa528de, 0xb7da268e, 0xad3fa4bf, 0x3a2ce49d, 0x78500d92,      0x5f6a9bcc, 0x7e546246, 0x8df6c213, 0xd890e8b8, 0x392e5ef7,      0xc382f5af, 0x5d9fbe80, 0xd0697c93, 0xd56fa92d, 0x25cfb312,      0xacc83b99, 0x1810a77d, 0x9ce86e63, 0x3bdb7bbb, 0x26cd0978,      0x596ef418, 0x9aec01b7, 0x4f83a89a, 0x95e6656e, 0xffaa7ee6,      0xbc2108cf, 0x15efe6e8, 0xe7bad99b, 0x6f4ace36, 0x9fead409,      0xb029d67c, 0xa431afb2, 0x3f2a3123, 0xa5c63094, 0xa235c066,      0x4e7437bc, 0x82fca6ca, 0x90e0b0d0, 0xa73315d8, 0x04f14a98,      0xec41f7da, 0xcd7f0e50, 0x91172ff6, 0x4d768dd6, 0xef434db0,      0xaacc544d, 0x96e4df04, 0xd19ee3b5, 0x6a4c1b88, 0x2cc1b81f,      0x65467f51, 0x5e9d04ea, 0x8c015d35, 0x87fa7374, 0x0bfb2e41,      0x67b35a1d, 0xdb9252d2, 0x10e93356, 0xd66d1347, 0xd79a8c61,      0xa1377a0c, 0xf8598e14, 0x13eb893c, 0xa9ceee27, 0x61b735c9,      0x1ce1ede5, 0x477a3cb1, 0xd29c59df, 0xf2553f73, 0x141879ce,      0xc773bf37, 0xf753eacd, 0xfd5f5baa, 0x3ddf146f, 0x447886db,      0xafca81f3, 0x68b93ec4, 0x24382c34, 0xa3c25f40, 0x1d1672c3,      0xe2bc0c25, 0x3c288b49, 0x0dff4195, 0xa8397101, 0x0c08deb3,      0xb4d89ce4, 0x566490c1, 0xcb7b6184, 0x32d570b6, 0x6c48745c,      0xb8d04257};    private static final int[] Tinv3 =    {     0x5150a7f4, 0x7e536541, 0x1ac3a417, 0x3a965e27, 0x3bcb6bab,      0x1ff1459d, 0xacab58fa, 0x4b9303e3, 0x2055fa30, 0xadf66d76,      0x889176cc, 0xf5254c02, 0x4ffcd7e5, 0xc5d7cb2a, 0x26804435,      0xb58fa362, 0xde495ab1, 0x25671bba, 0x45980eea, 0x5de1c0fe,      0xc302752f, 0x8112f04c, 0x8da39746, 0x6bc6f9d3, 0x03e75f8f,      0x15959c92, 0xbfeb7a6d, 0x95da5952, 0xd42d83be, 0x58d32174,      0x492969e0, 0x8e44c8c9, 0x756a89c2, 0xf478798e, 0x996b3e58,      0x27dd71b9, 0xbeb64fe1, 0xf017ad88, 0xc966ac20, 0x7db43ace,      0x63184adf, 0xe582311a, 0x97603351, 0x62457f53, 0xb1e07764,      0xbb84ae6b, 0xfe1ca081, 0xf9942b08, 0x70586848, 0x8f19fd45,      0x94876cde, 0x52b7f87b, 0xab23d373, 0x72e2024b, 0xe3578f1f,      0x662aab55, 0xb20728eb, 0x2f03c2b5, 0x869a7bc5, 0xd3a50837,      0x30f28728, 0x23b2a5bf, 0x02ba6a03, 0xed5c8216, 0x8a2b1ccf,      0xa792b479, 0xf3f0f207, 0x4ea1e269, 0x65cdf4da, 0x06d5be05,      0xd11f6234, 0xc48afea6, 0x349d532e, 0xa2a055f3, 0x0532e18a,      0xa475ebf6, 0x0b39ec83, 0x40aaef60, 0x5e069f71, 0xbd51106e,      0x3ef98a21, 0x963d06dd, 0xddae053e, 0x4d46bde6, 0x91b58d54,      0x71055dc4, 0x046fd406, 0x60ff1550, 0x1924fb98, 0xd697e9bd,      0x89cc4340, 0x67779ed9, 0xb0bd42e8, 0x07888b89, 0xe7385b19,      0x79dbeec8, 0xa1470a7c, 0x7ce90f42, 0xf8c91e84, 0x00000000,      0x09838680, 0x3248ed2b, 0x1eac7011, 0x6c4e725a, 0xfdfbff0e,      0x0f563885, 0x3d1ed5ae, 0x3627392d, 0x0a64d90f, 0x6821a65c,      0x9bd1545b, 0x243a2e36, 0x0cb1670a, 0x930fe757, 0xb4d296ee,      0x1b9e919b, 0x804fc5c0, 0x61a220dc, 0x5a694b77, 0x1c161a12,      0xe20aba93, 0xc0e52aa0, 0x3c43e022, 0x121d171b, 0x0e0b0d09,      0xf2adc78b, 0x2db9a8b6, 0x14c8a91e, 0x578519f1, 0xaf4c0775,      0xeebbdd99, 0xa3fd607f, 0xf79f2601, 0x5cbcf572, 0x44c53b66,      0x5b347efb, 0x8b762943, 0xcbdcc623, 0xb668fced, 0xb863f1e4,      0xd7cadc31, 0x42108563, 0x13402297, 0x842011c6, 0x857d244a,      0xd2f83dbb, 0xae1132f9, 0xc76da129, 0x1d4b2f9e, 0xdcf330b2,      0x0dec5286, 0x77d0e3c1, 0x2b6c16b3, 0xa999b970, 0x11fa4894,      0x472264e9, 0xa8c48cfc, 0xa01a3ff0, 0x56d82c7d, 0x22ef9033,      0x87c74e49, 0xd9c1d138, 0x8cfea2ca, 0x98360bd4, 0xa6cf81f5,      0xa528de7a, 0xda268eb7, 0x3fa4bfad, 0x2ce49d3a, 0x500d9278,      0x6a9bcc5f, 0x5462467e, 0xf6c2138d, 0x90e8b8d8, 0x2e5ef739,      0x82f5afc3, 0x9fbe805d, 0x697c93d0, 0x6fa92dd5, 0xcfb31225,      0xc83b99ac, 0x10a77d18, 0xe86e639c, 0xdb7bbb3b, 0xcd097826,      0x6ef41859, 0xec01b79a, 0x83a89a4f, 0xe6656e95, 0xaa7ee6ff,      0x2108cfbc, 0xefe6e815, 0xbad99be7, 0x4ace366f, 0xead4099f,      0x29d67cb0, 0x31afb2a4, 0x2a31233f, 0xc63094a5, 0x35c066a2,      0x7437bc4e, 0xfca6ca82, 0xe0b0d090, 0x3315d8a7, 0xf14a9804,      0x41f7daec, 0x7f0e50cd, 0x172ff691, 0x768dd64d, 0x434db0ef,      0xcc544daa, 0xe4df0496, 0x9ee3b5d1, 0x4c1b886a, 0xc1b81f2c,      0x467f5165, 0x9d04ea5e, 0x015d358c, 0xfa737487, 0xfb2e410b,      0xb35a1d67, 0x9252d2db, 0xe9335610, 0x6d1347d6, 0x9a8c61d7,      0x377a0ca1, 0x598e14f8, 0xeb893c13, 0xceee27a9, 0xb735c961,      0xe1ede51c, 0x7a3cb147, 0x9c59dfd2, 0x553f73f2, 0x1879ce14,      0x73bf37c7, 0x53eacdf7, 0x5f5baafd, 0xdf146f3d, 0x7886db44,      0xca81f3af, 0xb93ec468, 0x382c3424, 0xc25f40a3, 0x1672c31d,      0xbc0c25e2, 0x288b493c, 0xff41950d, 0x397101a8, 0x08deb30c,      0xd89ce4b4, 0x6490c156, 0x7b6184cb, 0xd570b632, 0x48745c6c,      0xd04257b8};    private int shift(        int     r,        int     shift)    {        return (r >>> shift) | (r << -shift);    }    /* multiply four bytes in GF(2^8) by 'x' {02} in parallel */    private static final int m1 = 0x80808080;    private static final int m2 = 0x7f7f7f7f;    private static final int m3 = 0x0000001b;    private int FFmulX(int x)    {        return (((x & m2) << 1) ^ (((x & m1) >>> 7) * m3));    }    /*        The following defines provide alternative definitions of FFmulX that might       give improved performance if a fast 32-bit multiply is not available.              private int FFmulX(int x) { int u = x & m1; u |= (u >> 1); return ((x & m2) << 1) ^ ((u >>> 3) | (u >>> 6)); }        private static final int  m4 = 0x1b1b1b1b;       private int FFmulX(int x) { int u = x & m1; return ((x & m2) << 1) ^ ((u - (u >>> 7)) & m4); }     */    private int inv_mcol(int x)    {        int f2 = FFmulX(x);        int f4 = FFmulX(f2);        int f8 = FFmulX(f4);        int f9 = x ^ f8;                return f2 ^ f4 ^ f8 ^ shift(f2 ^ f9, 8) ^ shift(f4 ^ f9, 16) ^ shift(f9, 24);    }    private int subWord(int x)    {        return (S[x&255]&255 | ((S[(x>>8)&255]&255)<<8) | ((S[(x>>16)&255]&255)<<16) | S[(x>>24)&255]<<24);    }    /**     * Calculate the necessary round keys     * The number of calculations depends on key size and block size     * AES specified a fixed block size of 128 bits and key sizes 128/192/256 bits     * This code is written assuming those are the only possible values     */    private int[][] generateWorkingKey(                                    byte[] key,                                    boolean forEncryption)    {        int         KC = key.length / 4;  // key length in words        int         t;                if (((KC != 4) && (KC != 6) && (KC != 8)) || ((KC * 4) != key.length))        {            throw new IllegalArgumentException("Key length not 128/192/256 bits.");        }        ROUNDS = KC + 6;  // This is not always true for the generalized Rijndael that allows larger block sizes        int[][] W = new int[ROUNDS+1][4];   // 4 words in a block                //        // copy the key into the round key array        //                t = 0;        int i = 0;        while (i < key.length)        {            W[t >> 2][t & 3] = (key[i]&0xff) | ((key[i+1]&0xff) << 8) | ((key[i+2]&0xff) << 16) | (key[i+3] << 24);            i+=4;            t++;        }                //        // while not enough round key material calculated        // calculate new values        //        int k = (ROUNDS + 1) << 2;        for (i = KC; (i < k); i++)        {            int temp = W[(i - 1) >> 2][(i - 1) & 3];            if ((i % KC) == 0)            {                temp = subWord(shift(temp, 8)) ^ rcon[(i / KC) - 1];            }            else if ((KC > 6) && ((i % KC) == 4))            {                temp = subWord(temp);            }            W[i >> 2][i & 3] = W[(i - KC) >> 2][(i - KC) & 3] ^ temp;        }        if (!forEncryption)        {            for (int j = 1; j < ROUNDS; j++)            {                for (i = 0; i < 4; i++)                {                    W[j][i] = inv_mcol(W[j][i]);                }            }        }

⌨️ 快捷键说明

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