当前位置: 首页 > news >正文

javascript实现aes算法(支持微信小程序)

概述:

本代码是本人从c++代码上转换成的javascript代码,并测试验证通过的。代码比较长1000多行,考虑放其他地方要么要会员要么容易关闭,不容易被需要的获取到,故直接贴在本文档下面的章节,功能代码。

测试平台:

已经在如下环境中测试通过,其他平台(浏览器)应该也不会有问题:
1、nodejs中node.exe运行
2、微信小程序

功能代码:

function strAesCtxParams() {this.rdkeys;this.rounds;
};var rcon = [0x01000000, 0x02000000, 0x04000000, 0x08000000, 0x10000000, 0x20000000, 0x40000000, 0x80000000, 0x1B000000, 0x36000000];var Te0 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d,0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554,0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d,0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a,0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87,0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b,0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea,0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b,0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a,0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f,0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108,0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f,0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e,0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5,0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d,0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f,0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e,0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb,0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce,0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497,0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c,0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed,0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b,0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a,0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16,0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594,0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81,0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3,0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a,0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504,0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163,0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d,0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f,0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739,0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47,0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395,0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f,0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883,0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c,0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76,0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e,0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4,0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6,0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b,0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7,0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0,0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25,0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818,0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72,0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651,0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21,0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85,0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa,0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12,0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0,0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9,0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133,0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7,0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920,0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a,0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17,0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8,0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11,0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a,
];
var Te1 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b,0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5,0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b,0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676,0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d,0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0,0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf,0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0,0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626,0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc,0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1,0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515,0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3,0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a,0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2,0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575,0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a,0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0,0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3,0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484,0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded,0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b,0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939,0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf,0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb,0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585,0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f,0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8,0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f,0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5,0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121,0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2,0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec,0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717,0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d,0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373,0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc,0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888,0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414,0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb,0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a,0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c,0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262,0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979,0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d,0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9,0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea,0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808,0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e,0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6,0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f,0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a,0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666,0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e,0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9,0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e,0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111,0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494,0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9,0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf,0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d,0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868,0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f,0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616,
];
var Te2 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b,0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5,0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b,0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76,0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d,0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0,0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af,0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0,0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26,0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc,0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1,0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15,0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3,0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a,0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2,0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75,0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a,0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0,0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3,0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384,0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed,0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b,0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239,0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf,0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb,0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185,0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f,0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8,0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f,0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5,0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221,0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2,0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec,0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17,0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d,0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673,0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc,0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88,0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814,0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb,0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a,0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c,0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462,0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279,0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d,0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9,0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea,0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008,0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e,0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6,0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f,0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a,0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66,0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e,0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9,0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e,0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211,0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394,0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9,0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df,0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d,0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068,0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f,0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16,
];
var Te3 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6,0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491,0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56,0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec,0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa,0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb,0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45,0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b,0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c,0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83,0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9,0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a,0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d,0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f,0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf,0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea,0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34,0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b,0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d,0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713,0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1,0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6,0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72,0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85,0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed,0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411,0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe,0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b,0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05,0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1,0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342,0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf,0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3,0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e,0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a,0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6,0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3,0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b,0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28,0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad,0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14,0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8,0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4,0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2,0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da,0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049,0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf,0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810,0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c,0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197,0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e,0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f,0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc,0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c,0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069,0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927,0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322,0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733,0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9,0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5,0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a,0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0,0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e,0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c,
];var Te4 = [0x63636363, 0x7c7c7c7c, 0x77777777, 0x7b7b7b7b,0xf2f2f2f2, 0x6b6b6b6b, 0x6f6f6f6f, 0xc5c5c5c5,0x30303030, 0x01010101, 0x67676767, 0x2b2b2b2b,0xfefefefe, 0xd7d7d7d7, 0xabababab, 0x76767676,0xcacacaca, 0x82828282, 0xc9c9c9c9, 0x7d7d7d7d,0xfafafafa, 0x59595959, 0x47474747, 0xf0f0f0f0,0xadadadad, 0xd4d4d4d4, 0xa2a2a2a2, 0xafafafaf,0x9c9c9c9c, 0xa4a4a4a4, 0x72727272, 0xc0c0c0c0,0xb7b7b7b7, 0xfdfdfdfd, 0x93939393, 0x26262626,0x36363636, 0x3f3f3f3f, 0xf7f7f7f7, 0xcccccccc,0x34343434, 0xa5a5a5a5, 0xe5e5e5e5, 0xf1f1f1f1,0x71717171, 0xd8d8d8d8, 0x31313131, 0x15151515,0x04040404, 0xc7c7c7c7, 0x23232323, 0xc3c3c3c3,0x18181818, 0x96969696, 0x05050505, 0x9a9a9a9a,0x07070707, 0x12121212, 0x80808080, 0xe2e2e2e2,0xebebebeb, 0x27272727, 0xb2b2b2b2, 0x75757575,0x09090909, 0x83838383, 0x2c2c2c2c, 0x1a1a1a1a,0x1b1b1b1b, 0x6e6e6e6e, 0x5a5a5a5a, 0xa0a0a0a0,0x52525252, 0x3b3b3b3b, 0xd6d6d6d6, 0xb3b3b3b3,0x29292929, 0xe3e3e3e3, 0x2f2f2f2f, 0x84848484,0x53535353, 0xd1d1d1d1, 0x00000000, 0xedededed,0x20202020, 0xfcfcfcfc, 0xb1b1b1b1, 0x5b5b5b5b,0x6a6a6a6a, 0xcbcbcbcb, 0xbebebebe, 0x39393939,0x4a4a4a4a, 0x4c4c4c4c, 0x58585858, 0xcfcfcfcf,0xd0d0d0d0, 0xefefefef, 0xaaaaaaaa, 0xfbfbfbfb,0x43434343, 0x4d4d4d4d, 0x33333333, 0x85858585,0x45454545, 0xf9f9f9f9, 0x02020202, 0x7f7f7f7f,0x50505050, 0x3c3c3c3c, 0x9f9f9f9f, 0xa8a8a8a8,0x51515151, 0xa3a3a3a3, 0x40404040, 0x8f8f8f8f,0x92929292, 0x9d9d9d9d, 0x38383838, 0xf5f5f5f5,0xbcbcbcbc, 0xb6b6b6b6, 0xdadadada, 0x21212121,0x10101010, 0xffffffff, 0xf3f3f3f3, 0xd2d2d2d2,0xcdcdcdcd, 0x0c0c0c0c, 0x13131313, 0xecececec,0x5f5f5f5f, 0x97979797, 0x44444444, 0x17171717,0xc4c4c4c4, 0xa7a7a7a7, 0x7e7e7e7e, 0x3d3d3d3d,0x64646464, 0x5d5d5d5d, 0x19191919, 0x73737373,0x60606060, 0x81818181, 0x4f4f4f4f, 0xdcdcdcdc,0x22222222, 0x2a2a2a2a, 0x90909090, 0x88888888,0x46464646, 0xeeeeeeee, 0xb8b8b8b8, 0x14141414,0xdededede, 0x5e5e5e5e, 0x0b0b0b0b, 0xdbdbdbdb,0xe0e0e0e0, 0x32323232, 0x3a3a3a3a, 0x0a0a0a0a,0x49494949, 0x06060606, 0x24242424, 0x5c5c5c5c,0xc2c2c2c2, 0xd3d3d3d3, 0xacacacac, 0x62626262,0x91919191, 0x95959595, 0xe4e4e4e4, 0x79797979,0xe7e7e7e7, 0xc8c8c8c8, 0x37373737, 0x6d6d6d6d,0x8d8d8d8d, 0xd5d5d5d5, 0x4e4e4e4e, 0xa9a9a9a9,0x6c6c6c6c, 0x56565656, 0xf4f4f4f4, 0xeaeaeaea,0x65656565, 0x7a7a7a7a, 0xaeaeaeae, 0x08080808,0xbabababa, 0x78787878, 0x25252525, 0x2e2e2e2e,0x1c1c1c1c, 0xa6a6a6a6, 0xb4b4b4b4, 0xc6c6c6c6,0xe8e8e8e8, 0xdddddddd, 0x74747474, 0x1f1f1f1f,0x4b4b4b4b, 0xbdbdbdbd, 0x8b8b8b8b, 0x8a8a8a8a,0x70707070, 0x3e3e3e3e, 0xb5b5b5b5, 0x66666666,0x48484848, 0x03030303, 0xf6f6f6f6, 0x0e0e0e0e,0x61616161, 0x35353535, 0x57575757, 0xb9b9b9b9,0x86868686, 0xc1c1c1c1, 0x1d1d1d1d, 0x9e9e9e9e,0xe1e1e1e1, 0xf8f8f8f8, 0x98989898, 0x11111111,0x69696969, 0xd9d9d9d9, 0x8e8e8e8e, 0x94949494,0x9b9b9b9b, 0x1e1e1e1e, 0x87878787, 0xe9e9e9e9,0xcececece, 0x55555555, 0x28282828, 0xdfdfdfdf,0x8c8c8c8c, 0xa1a1a1a1, 0x89898989, 0x0d0d0d0d,0xbfbfbfbf, 0xe6e6e6e6, 0x42424242, 0x68686868,0x41414141, 0x99999999, 0x2d2d2d2d, 0x0f0f0f0f,0xb0b0b0b0, 0x54545454, 0xbbbbbbbb, 0x16161616
];var Td0 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96,0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393,0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25,0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f,0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1,0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6,0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da,0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844,0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd,0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4,0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45,0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94,0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7,0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a,0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5,0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c,0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1,0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a,0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75,0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051,0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46,0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff,0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77,0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb,0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000,0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e,0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927,0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a,0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e,0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16,0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d,0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8,0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd,0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34,0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163,0xd731dcca, 0x42638510, 0x13972240, 0x84c61120,0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d,0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0,0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422,0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef,0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36,0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4,0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662,0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5,0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3,0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b,0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8,0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6,0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6,0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0,0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815,0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f,0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df,0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f,0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e,0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713,0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89,0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c,0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf,0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86,0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f,0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541,0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190,0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742,
];
var Td1 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e,0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303,0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c,0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3,0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0,0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9,0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259,0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8,0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971,0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a,0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f,0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b,0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8,0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab,0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708,0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682,0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2,0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe,0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb,0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10,0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd,0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015,0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e,0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee,0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000,0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72,0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39,0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e,0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91,0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a,0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17,0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9,0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60,0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e,0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1,0xcad731dc, 0x10426385, 0x40139722, 0x2084c611,0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1,0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3,0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964,0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390,0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b,0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf,0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46,0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af,0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512,0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb,0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a,0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8,0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c,0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266,0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8,0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6,0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604,0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551,0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41,0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647,0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c,0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1,0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737,0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db,0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340,0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95,0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1,0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857,
];
var Td2 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27,0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3,0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502,0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562,0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe,0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3,0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552,0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9,0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9,0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce,0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253,0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908,0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b,0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655,0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337,0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16,0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69,0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6,0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6,0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e,0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6,0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050,0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9,0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8,0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000,0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a,0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d,0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436,0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b,0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12,0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b,0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e,0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f,0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb,0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4,0xdccad731, 0x85104263, 0x22401397, 0x112084c6,0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729,0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1,0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9,0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233,0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4,0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad,0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e,0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3,0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25,0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b,0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f,0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15,0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0,0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2,0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7,0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791,0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496,0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665,0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b,0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6,0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13,0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47,0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7,0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844,0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3,0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d,0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456,0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8,
];
var Td3 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a,0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b,0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5,0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5,0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d,0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b,0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95,0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e,0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27,0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d,0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562,0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9,0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752,0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66,0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3,0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced,0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e,0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4,0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4,0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd,0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d,0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60,0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767,0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79,0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000,0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c,0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736,0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24,0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b,0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c,0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12,0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814,0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3,0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b,0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8,0x31dccad7, 0x63851042, 0x97224013, 0xc6112084,0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7,0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077,0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247,0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22,0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698,0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f,0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254,0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582,0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf,0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb,0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883,0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef,0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629,0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035,0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533,0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17,0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4,0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46,0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb,0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d,0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb,0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a,0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73,0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678,0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2,0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff,0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064,0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0,
];
var Td4 = [0x52525252, 0x09090909, 0x6a6a6a6a, 0xd5d5d5d5,0x30303030, 0x36363636, 0xa5a5a5a5, 0x38383838,0xbfbfbfbf, 0x40404040, 0xa3a3a3a3, 0x9e9e9e9e,0x81818181, 0xf3f3f3f3, 0xd7d7d7d7, 0xfbfbfbfb,0x7c7c7c7c, 0xe3e3e3e3, 0x39393939, 0x82828282,0x9b9b9b9b, 0x2f2f2f2f, 0xffffffff, 0x87878787,0x34343434, 0x8e8e8e8e, 0x43434343, 0x44444444,0xc4c4c4c4, 0xdededede, 0xe9e9e9e9, 0xcbcbcbcb,0x54545454, 0x7b7b7b7b, 0x94949494, 0x32323232,0xa6a6a6a6, 0xc2c2c2c2, 0x23232323, 0x3d3d3d3d,0xeeeeeeee, 0x4c4c4c4c, 0x95959595, 0x0b0b0b0b,0x42424242, 0xfafafafa, 0xc3c3c3c3, 0x4e4e4e4e,0x08080808, 0x2e2e2e2e, 0xa1a1a1a1, 0x66666666,0x28282828, 0xd9d9d9d9, 0x24242424, 0xb2b2b2b2,0x76767676, 0x5b5b5b5b, 0xa2a2a2a2, 0x49494949,0x6d6d6d6d, 0x8b8b8b8b, 0xd1d1d1d1, 0x25252525,0x72727272, 0xf8f8f8f8, 0xf6f6f6f6, 0x64646464,0x86868686, 0x68686868, 0x98989898, 0x16161616,0xd4d4d4d4, 0xa4a4a4a4, 0x5c5c5c5c, 0xcccccccc,0x5d5d5d5d, 0x65656565, 0xb6b6b6b6, 0x92929292,0x6c6c6c6c, 0x70707070, 0x48484848, 0x50505050,0xfdfdfdfd, 0xedededed, 0xb9b9b9b9, 0xdadadada,0x5e5e5e5e, 0x15151515, 0x46464646, 0x57575757,0xa7a7a7a7, 0x8d8d8d8d, 0x9d9d9d9d, 0x84848484,0x90909090, 0xd8d8d8d8, 0xabababab, 0x00000000,0x8c8c8c8c, 0xbcbcbcbc, 0xd3d3d3d3, 0x0a0a0a0a,0xf7f7f7f7, 0xe4e4e4e4, 0x58585858, 0x05050505,0xb8b8b8b8, 0xb3b3b3b3, 0x45454545, 0x06060606,0xd0d0d0d0, 0x2c2c2c2c, 0x1e1e1e1e, 0x8f8f8f8f,0xcacacaca, 0x3f3f3f3f, 0x0f0f0f0f, 0x02020202,0xc1c1c1c1, 0xafafafaf, 0xbdbdbdbd, 0x03030303,0x01010101, 0x13131313, 0x8a8a8a8a, 0x6b6b6b6b,0x3a3a3a3a, 0x91919191, 0x11111111, 0x41414141,0x4f4f4f4f, 0x67676767, 0xdcdcdcdc, 0xeaeaeaea,0x97979797, 0xf2f2f2f2, 0xcfcfcfcf, 0xcececece,0xf0f0f0f0, 0xb4b4b4b4, 0xe6e6e6e6, 0x73737373,0x96969696, 0xacacacac, 0x74747474, 0x22222222,0xe7e7e7e7, 0xadadadad, 0x35353535, 0x85858585,0xe2e2e2e2, 0xf9f9f9f9, 0x37373737, 0xe8e8e8e8,0x1c1c1c1c, 0x75757575, 0xdfdfdfdf, 0x6e6e6e6e,0x47474747, 0xf1f1f1f1, 0x1a1a1a1a, 0x71717171,0x1d1d1d1d, 0x29292929, 0xc5c5c5c5, 0x89898989,0x6f6f6f6f, 0xb7b7b7b7, 0x62626262, 0x0e0e0e0e,0xaaaaaaaa, 0x18181818, 0xbebebebe, 0x1b1b1b1b,0xfcfcfcfc, 0x56565656, 0x3e3e3e3e, 0x4b4b4b4b,0xc6c6c6c6, 0xd2d2d2d2, 0x79797979, 0x20202020,0x9a9a9a9a, 0xdbdbdbdb, 0xc0c0c0c0, 0xfefefefe,0x78787878, 0xcdcdcdcd, 0x5a5a5a5a, 0xf4f4f4f4,0x1f1f1f1f, 0xdddddddd, 0xa8a8a8a8, 0x33333333,0x88888888, 0x07070707, 0xc7c7c7c7, 0x31313131,0xb1b1b1b1, 0x12121212, 0x10101010, 0x59595959,0x27272727, 0x80808080, 0xecececec, 0x5f5f5f5f,0x60606060, 0x51515151, 0x7f7f7f7f, 0xa9a9a9a9,0x19191919, 0xb5b5b5b5, 0x4a4a4a4a, 0x0d0d0d0d,0x2d2d2d2d, 0xe5e5e5e5, 0x7a7a7a7a, 0x9f9f9f9f,0x93939393, 0xc9c9c9c9, 0x9c9c9c9c, 0xefefefef,0xa0a0a0a0, 0xe0e0e0e0, 0x3b3b3b3b, 0x4d4d4d4d,0xaeaeaeae, 0x2a2a2a2a, 0xf5f5f5f5, 0xb0b0b0b0,0xc8c8c8c8, 0xebebebeb, 0xbbbbbbbb, 0x3c3c3c3c,0x83838383, 0x53535353, 0x99999999, 0x61616161,0x17171717, 0x2b2b2b2b, 0x04040404, 0x7e7e7e7e,0xbabababa, 0x77777777, 0xd6d6d6d6, 0x26262626,0xe1e1e1e1, 0x69696969, 0x14141414, 0x63636363,0x55555555, 0x21212121, 0x0c0c0c0c, 0x7d7d7d7d,
];function GETU32(array, index) {return ((parseInt(array[index]) & 0xff) << 24) |((parseInt(array[index + 1]) & 0xff) << 16) |((parseInt(array[index + 2]) & 0xff) << 8) |((parseInt(array[index + 3]) & 0xff) << 0);
}function PUTU32(outArray, arrayIndex, inIntData) {outArray[0 + arrayIndex] = inIntData >>> 24;outArray[1 + arrayIndex] = inIntData >>> 16;outArray[2 + arrayIndex] = inIntData >>> 8;outArray[3 + arrayIndex] = inIntData >>> 0;
}function aes_str_to_array(strIn) {var bytesArray = new Uint8Array(strIn.length);var i = 0;for (i = 0; i < strIn.length; i++) {bytesArray[i] = strIn.charCodeAt(i);}return bytesArray;
}function aes_init(keyArray, keyLen, isToEncrypt) {var aesCtxParams = new strAesCtxParams();var bits = keyLen * 8;var i = 0;var j = 0;var rdIndex = 0;var temp = 0;aesCtxParams.rdkeys = new Array(4 * 14);aesCtxParams.rounds = 0;for (i = 0; i < 4 * 14; i++) {aesCtxParams.rdkeys[i] = 0;}if (bits == 128) {aesCtxParams.rounds = 10;} else if (bits == 192) {aesCtxParams.rounds = 12;} else {aesCtxParams.rounds = 14;}aesCtxParams.rdkeys[0] = GETU32(keyArray, 0);aesCtxParams.rdkeys[1] = GETU32(keyArray, 4);aesCtxParams.rdkeys[2] = GETU32(keyArray, 8);aesCtxParams.rdkeys[3] = GETU32(keyArray, 12);if (bits == 128) {i = 0;rdIndex = 0;while (true) {temp = aesCtxParams.rdkeys[3 + rdIndex];aesCtxParams.rdkeys[4 + rdIndex] = aesCtxParams.rdkeys[0 + rdIndex] ^(Te4[(temp >>> 16) & 0xff] & 0xff000000) ^(Te4[(temp >>> 8) & 0xff] & 0x00ff0000) ^(Te4[(temp) & 0xff] & 0x0000ff00) ^(Te4[(temp >>> 24) & 0xff] & 0x000000ff) ^rcon[i];aesCtxParams.rdkeys[5 + rdIndex] = aesCtxParams.rdkeys[1 + rdIndex] ^ aesCtxParams.rdkeys[4 + rdIndex];aesCtxParams.rdkeys[6 + rdIndex] = aesCtxParams.rdkeys[2 + rdIndex] ^ aesCtxParams.rdkeys[5 + rdIndex];aesCtxParams.rdkeys[7 + rdIndex] = aesCtxParams.rdkeys[3 + rdIndex] ^ aesCtxParams.rdkeys[6 + rdIndex];aesCtxParams.rdkeys[4 + rdIndex] &= 0xffffffff;aesCtxParams.rdkeys[5 + rdIndex] &= 0xffffffff;aesCtxParams.rdkeys[6 + rdIndex] &= 0xffffffff;aesCtxParams.rdkeys[7 + rdIndex] &= 0xffffffff;i++;if (i == 10) {break;}rdIndex += 4;}}if (bits == 192) {i = 0;rdIndex = 0;aesCtxParams.rdkeys[4] = GETU32(keyArray, 16);aesCtxParams.rdkeys[5] = GETU32(keyArray, 20);while (true) {temp = aesCtxParams.rdkeys[5 + rdIndex];aesCtxParams.rdkeys[6 + rdIndex] = aesCtxParams.rdkeys[0 + rdIndex] ^(Te4[(temp >> 16) & 0xff] & 0xff000000) ^(Te4[(temp >> 8) & 0xff] & 0x00ff0000) ^(Te4[(temp) & 0xff] & 0x0000ff00) ^(Te4[(temp >> 24) & 0xff] & 0x000000ff) ^rcon[i];aesCtxParams.rdkeys[7 + rdIndex] = aesCtxParams.rdkeys[1 + rdIndex] ^ aesCtxParams.rdkeys[6 + rdIndex];aesCtxParams.rdkeys[8 + rdIndex] = aesCtxParams.rdkeys[2 + rdIndex] ^ aesCtxParams.rdkeys[7 + rdIndex];aesCtxParams.rdkeys[9 + rdIndex] = aesCtxParams.rdkeys[3 + rdIndex] ^ aesCtxParams.rdkeys[8 + rdIndex];i++;if (i == 8) {break;}aesCtxParams.rdkeys[10 + rdIndex] = aesCtxParams.rdkeys[4 + rdIndex] ^ aesCtxParams.rdkeys[9 + rdIndex];aesCtxParams.rdkeys[11 + rdIndex] = aesCtxParams.rdkeys[5 + rdIndex] ^ aesCtxParams.rdkeys[10 + rdIndex];rdIndex += 6;}}if (bits == 256) {i = 0;rdIndex = 0;aesCtxParams.rdkeys[4] = GETU32(keyArray, 16);aesCtxParams.rdkeys[5] = GETU32(keyArray, 20);aesCtxParams.rdkeys[6] = GETU32(keyArray, 24);aesCtxParams.rdkeys[7] = GETU32(keyArray, 28);while (1) {temp = aesCtxParams.rdkeys[7 + rdIndex];aesCtxParams.rdkeys[8 + rdIndex] = aesCtxParams.rdkeys[0 + rdIndex] ^(Te4[(temp >> 16) & 0xff] & 0xff000000) ^(Te4[(temp >> 8) & 0xff] & 0x00ff0000) ^(Te4[(temp) & 0xff] & 0x0000ff00) ^(Te4[(temp >> 24) & 0xff] & 0x000000ff) ^rcon[i];aesCtxParams.rdkeys[9 + rdIndex] = aesCtxParams.rdkeys[1 + rdIndex] ^ aesCtxParams.rdkeys[8 + rdIndex];aesCtxParams.rdkeys[10 + rdIndex] = aesCtxParams.rdkeys[2 + rdIndex] ^ aesCtxParams.rdkeys[9 + rdIndex];aesCtxParams.rdkeys[11 + rdIndex] = aesCtxParams.rdkeys[3 + rdIndex] ^ aesCtxParams.rdkeys[10 + rdIndex];i++;if (i == 7) {break;}temp = aesCtxParams.rdkeys[11 + rdIndex];aesCtxParams.rdkeys[12 + rdIndex] = aesCtxParams.rdkeys[4 + rdIndex] ^(Te4[(temp >> 24) & 0xff] & 0xff000000) ^(Te4[(temp >> 16) & 0xff] & 0x00ff0000) ^(Te4[(temp >> 8) & 0xff] & 0x0000ff00) ^(Te4[(temp) & 0xff] & 0x000000ff);aesCtxParams.rdkeys[13 + rdIndex] = aesCtxParams.rdkeys[5 + rdIndex] ^ aesCtxParams.rdkeys[12 + rdIndex];aesCtxParams.rdkeys[14 + rdIndex] = aesCtxParams.rdkeys[6 + rdIndex] ^ aesCtxParams.rdkeys[13 + rdIndex];aesCtxParams.rdkeys[15 + rdIndex] = aesCtxParams.rdkeys[7 + rdIndex] ^ aesCtxParams.rdkeys[14 + rdIndex];rdIndex += 8;}}if (isToEncrypt) {return aesCtxParams;}rdIndex = 0;for (i = 0, j = 4 * (aesCtxParams.rounds); i < j; i += 4, j -= 4) {temp = aesCtxParams.rdkeys[i];aesCtxParams.rdkeys[i] = aesCtxParams.rdkeys[j];aesCtxParams.rdkeys[j] = temp;temp = aesCtxParams.rdkeys[i + 1];aesCtxParams.rdkeys[i + 1] = aesCtxParams.rdkeys[j + 1];aesCtxParams.rdkeys[j + 1] = temp;temp = aesCtxParams.rdkeys[i + 2];aesCtxParams.rdkeys[i + 2] = aesCtxParams.rdkeys[j + 2];aesCtxParams.rdkeys[j + 2] = temp;temp = aesCtxParams.rdkeys[i + 3];aesCtxParams.rdkeys[i + 3] = aesCtxParams.rdkeys[j + 3];aesCtxParams.rdkeys[j + 3] = temp;}for (i = 1; i < aesCtxParams.rounds; i++) {rdIndex += 4;aesCtxParams.rdkeys[0 + rdIndex] =Td0[Te4[(aesCtxParams.rdkeys[0 + rdIndex] >> 24) & 0xff] & 0xff] ^Td1[Te4[(aesCtxParams.rdkeys[0 + rdIndex] >> 16) & 0xff] & 0xff] ^Td2[Te4[(aesCtxParams.rdkeys[0 + rdIndex] >> 8) & 0xff] & 0xff] ^Td3[Te4[(aesCtxParams.rdkeys[0 + rdIndex]) & 0xff] & 0xff];aesCtxParams.rdkeys[1 + rdIndex] =Td0[Te4[(aesCtxParams.rdkeys[1 + rdIndex] >> 24) & 0xff] & 0xff] ^Td1[Te4[(aesCtxParams.rdkeys[1 + rdIndex] >> 16) & 0xff] & 0xff] ^Td2[Te4[(aesCtxParams.rdkeys[1 + rdIndex] >> 8) & 0xff] & 0xff] ^Td3[Te4[(aesCtxParams.rdkeys[1 + rdIndex]) & 0xff] & 0xff];aesCtxParams.rdkeys[2 + rdIndex] =Td0[Te4[(aesCtxParams.rdkeys[2 + rdIndex] >> 24) & 0xff] & 0xff] ^Td1[Te4[(aesCtxParams.rdkeys[2 + rdIndex] >> 16) & 0xff] & 0xff] ^Td2[Te4[(aesCtxParams.rdkeys[2 + rdIndex] >> 8) & 0xff] & 0xff] ^Td3[Te4[(aesCtxParams.rdkeys[2 + rdIndex]) & 0xff] & 0xff];aesCtxParams.rdkeys[3 + rdIndex] =Td0[Te4[(aesCtxParams.rdkeys[3 + rdIndex] >> 24) & 0xff] & 0xff] ^Td1[Te4[(aesCtxParams.rdkeys[3 + rdIndex] >> 16) & 0xff] & 0xff] ^Td2[Te4[(aesCtxParams.rdkeys[3 + rdIndex] >> 8) & 0xff] & 0xff] ^Td3[Te4[(aesCtxParams.rdkeys[3 + rdIndex]) & 0xff] & 0xff];}return aesCtxParams;
}function aes_encrypt(aesCtxParams, byteArrayDataIn) {var r = 0;var s0, s1, s2, s3, t0, t1, t2, t3;var rdIndex = 0;var out = new Uint8Array(16);s0 = GETU32(byteArrayDataIn, 0) ^ aesCtxParams.rdkeys[0];s1 = GETU32(byteArrayDataIn, 4) ^ aesCtxParams.rdkeys[1];s2 = GETU32(byteArrayDataIn, 8) ^ aesCtxParams.rdkeys[2];s3 = GETU32(byteArrayDataIn, 12) ^ aesCtxParams.rdkeys[3];rdIndex = 0;r = aesCtxParams.rounds >> 1;for (;;) {t0 =Te0[(s0 >> 24) & 0xff] ^Te1[(s1 >> 16) & 0xff] ^Te2[(s2 >> 8) & 0xff] ^Te3[(s3) & 0xff] ^aesCtxParams.rdkeys[4 + rdIndex];t1 =Te0[(s1 >> 24) & 0xff] ^Te1[(s2 >> 16) & 0xff] ^Te2[(s3 >> 8) & 0xff] ^Te3[(s0) & 0xff] ^aesCtxParams.rdkeys[5 + rdIndex];t2 =Te0[(s2 >> 24) & 0xff] ^Te1[(s3 >> 16) & 0xff] ^Te2[(s0 >> 8) & 0xff] ^Te3[(s1) & 0xff] ^aesCtxParams.rdkeys[6 + rdIndex];t3 =Te0[(s3 >> 24) & 0xff] ^Te1[(s0 >> 16) & 0xff] ^Te2[(s1 >> 8) & 0xff] ^Te3[(s2) & 0xff] ^aesCtxParams.rdkeys[7 + rdIndex];rdIndex += 8;r--;if (r <= 0) {break;}s0 =Te0[(t0 >> 24) & 0xff] ^Te1[(t1 >> 16) & 0xff] ^Te2[(t2 >> 8) & 0xff] ^Te3[(t3) & 0xff] ^aesCtxParams.rdkeys[0 + rdIndex];s1 =Te0[(t1 >> 24) & 0xff] ^Te1[(t2 >> 16) & 0xff] ^Te2[(t3 >> 8) & 0xff] ^Te3[(t0) & 0xff] ^aesCtxParams.rdkeys[1 + rdIndex];s2 =Te0[(t2 >> 24) & 0xff] ^Te1[(t3 >> 16) & 0xff] ^Te2[(t0 >> 8) & 0xff] ^Te3[(t1) & 0xff] ^aesCtxParams.rdkeys[2 + rdIndex];s3 =Te0[(t3 >> 24) & 0xff] ^Te1[(t0 >> 16) & 0xff] ^Te2[(t1 >> 8) & 0xff] ^Te3[(t2) & 0xff] ^aesCtxParams.rdkeys[3 + rdIndex];}s0 =(Te4[(t0 >> 24) & 0xff] & 0xff000000) ^(Te4[(t1 >> 16) & 0xff] & 0x00ff0000) ^(Te4[(t2 >> 8) & 0xff] & 0x0000ff00) ^(Te4[(t3) & 0xff] & 0x000000ff) ^aesCtxParams.rdkeys[0 + rdIndex];PUTU32(out, 0, s0);s1 =(Te4[(t1 >> 24) & 0xff] & 0xff000000) ^(Te4[(t2 >> 16) & 0xff] & 0x00ff0000) ^(Te4[(t3 >> 8) & 0xff] & 0x0000ff00) ^(Te4[(t0) & 0xff] & 0x000000ff) ^aesCtxParams.rdkeys[1 + rdIndex];PUTU32(out, 4, s1);s2 =(Te4[(t2 >> 24) & 0xff] & 0xff000000) ^(Te4[(t3 >> 16) & 0xff] & 0x00ff0000) ^(Te4[(t0 >> 8) & 0xff] & 0x0000ff00) ^(Te4[(t1) & 0xff] & 0x000000ff) ^aesCtxParams.rdkeys[2 + rdIndex];PUTU32(out, 8, s2);s3 =(Te4[(t3 >> 24) & 0xff] & 0xff000000) ^(Te4[(t0 >> 16) & 0xff] & 0x00ff0000) ^(Te4[(t1 >> 8) & 0xff] & 0x0000ff00) ^(Te4[(t2) & 0xff] & 0x000000ff) ^aesCtxParams.rdkeys[3 + rdIndex];PUTU32(out, 12, s3);return out;
}function aes_decrypt(aesCtxParams, byteArrayDataIn) {var r = 0;var s0, s1, s2, s3, t0, t1, t2, t3;var rdIndex = 0;var out = new Uint8Array(16);s0 = GETU32(byteArrayDataIn, 0) ^ aesCtxParams.rdkeys[0];s1 = GETU32(byteArrayDataIn, 4) ^ aesCtxParams.rdkeys[1];s2 = GETU32(byteArrayDataIn, 8) ^ aesCtxParams.rdkeys[2];s3 = GETU32(byteArrayDataIn, 12) ^ aesCtxParams.rdkeys[3];rdIndex = 0;r = aesCtxParams.rounds >> 1;for (;;) {t0 =Td0[(s0 >> 24) & 0xff] ^Td1[(s3 >> 16) & 0xff] ^Td2[(s2 >> 8) & 0xff] ^Td3[(s1) & 0xff] ^aesCtxParams.rdkeys[4 + rdIndex];t1 =Td0[(s1 >> 24) & 0xff] ^Td1[(s0 >> 16) & 0xff] ^Td2[(s3 >> 8) & 0xff] ^Td3[(s2) & 0xff] ^aesCtxParams.rdkeys[5 + rdIndex];t2 =Td0[(s2 >> 24) & 0xff] ^Td1[(s1 >> 16) & 0xff] ^Td2[(s0 >> 8) & 0xff] ^Td3[(s3) & 0xff] ^aesCtxParams.rdkeys[6 + rdIndex];t3 =Td0[(s3 >> 24) & 0xff] ^Td1[(s2 >> 16) & 0xff] ^Td2[(s1 >> 8) & 0xff] ^Td3[(s0) & 0xff] ^aesCtxParams.rdkeys[7 + rdIndex];rdIndex += 8;r--;if (r <= 0) {break;}s0 =Td0[(t0 >> 24) & 0xff] ^Td1[(t3 >> 16) & 0xff] ^Td2[(t2 >> 8) & 0xff] ^Td3[(t1) & 0xff] ^aesCtxParams.rdkeys[0 + rdIndex];s1 =Td0[(t1 >> 24) & 0xff] ^Td1[(t0 >> 16) & 0xff] ^Td2[(t3 >> 8) & 0xff] ^Td3[(t2) & 0xff] ^aesCtxParams.rdkeys[1 + rdIndex];s2 =Td0[(t2 >> 24) & 0xff] ^Td1[(t1 >> 16) & 0xff] ^Td2[(t0 >> 8) & 0xff] ^Td3[(t3) & 0xff] ^aesCtxParams.rdkeys[2 + rdIndex];s3 =Td0[(t3 >> 24) & 0xff] ^Td1[(t2 >> 16) & 0xff] ^Td2[(t1 >> 8) & 0xff] ^Td3[(t0) & 0xff] ^aesCtxParams.rdkeys[3 + rdIndex];}s0 =(Td4[(t0 >> 24) & 0xff] & 0xff000000) ^(Td4[(t3 >> 16) & 0xff] & 0x00ff0000) ^(Td4[(t2 >> 8) & 0xff] & 0x0000ff00) ^(Td4[(t1) & 0xff] & 0x000000ff) ^aesCtxParams.rdkeys[0 + rdIndex];PUTU32(out, 0, s0);s1 =(Td4[(t1 >> 24) & 0xff] & 0xff000000) ^(Td4[(t0 >> 16) & 0xff] & 0x00ff0000) ^(Td4[(t3 >> 8) & 0xff] & 0x0000ff00) ^(Td4[(t2) & 0xff] & 0x000000ff) ^aesCtxParams.rdkeys[1 + rdIndex];PUTU32(out, 4, s1);s2 =(Td4[(t2 >> 24) & 0xff] & 0xff000000) ^(Td4[(t1 >> 16) & 0xff] & 0x00ff0000) ^(Td4[(t0 >> 8) & 0xff] & 0x0000ff00) ^(Td4[(t3) & 0xff] & 0x000000ff) ^aesCtxParams.rdkeys[2 + rdIndex];PUTU32(out, 8, s2);s3 =(Td4[(t3 >> 24) & 0xff] & 0xff000000) ^(Td4[(t2 >> 16) & 0xff] & 0x00ff0000) ^(Td4[(t1 >> 8) & 0xff] & 0x0000ff00) ^(Td4[(t0) & 0xff] & 0x000000ff) ^aesCtxParams.rdkeys[3 + rdIndex];PUTU32(out, 12, s3);return out;
}function aes_hex(result) {var sha256_hex_digits = "0123456789abcdef";var output = new String();var i = 0;for (i = 0; i < 16; i++) {output += sha256_hex_digits.charAt((result[i] >>> 4) & 0x0f);output += sha256_hex_digits.charAt((result[i]) & 0x0f);}return output;
}module.exports = {aes_init: aes_init,aes_encrypt: aes_encrypt,aes_decrypt: aes_decrypt,aes_str_to_array: aes_str_to_array,aes_hex: aes_hex
}

测试代码:

如下在微信小程序中测试验证

var js_aes = require('../../crypto/aes.js');
testAes() {var aesCtx = null;var result = null;aesCtx = js_aes.aes_init(js_aes.aes_str_to_array("1234567890123456"), 16, true);result = js_aes.aes_encrypt(aesCtx, js_aes.aes_str_to_array("shenweihong12345"));console.log("encrypt aes128:" + js_aes.aes_hex(result));aesCtx = js_aes.aes_init(js_aes.aes_str_to_array("1234567890123456kkllppoo"), 24, true);result = js_aes.aes_encrypt(aesCtx, js_aes.aes_str_to_array("shenweihong12345"));console.log("encrypt aes192:" + js_aes.aes_hex(result));aesCtx = js_aes.aes_init(js_aes.aes_str_to_array("1234567890123456kkllppoomadcxvzr"), 32, true);result = js_aes.aes_encrypt(aesCtx, js_aes.aes_str_to_array("shenweihong12345"));console.log("encrypt aes256:" + js_aes.aes_hex(result));aesCtx = js_aes.aes_init(js_aes.aes_str_to_array("1234567890123456"), 16, false);result = js_aes.aes_decrypt(aesCtx, js_aes.aes_str_to_array("shenweihong12345"));console.log("decrypt aes128:" + js_aes.aes_hex(result));aesCtx = js_aes.aes_init(js_aes.aes_str_to_array("1234567890123456kkllppoo"), 24, false);result = js_aes.aes_decrypt(aesCtx, js_aes.aes_str_to_array("shenweihong12345"));console.log("decrypt aes192:" + js_aes.aes_hex(result));aesCtx = js_aes.aes_init(js_aes.aes_str_to_array("1234567890123456kkllppoomadcxvzr"), 32, false);result = js_aes.aes_decrypt(aesCtx, js_aes.aes_str_to_array("shenweihong12345"));console.log("decrypt aes256:" + js_aes.aes_hex(result));},

测试结果:

encrypt aes128:3ad726cacfe6b3dabbd4b39034dd1df7
encrypt aes192:91dc867c353fbd3308d69ab9880b5125
encrypt aes256:cc6252fb2afbee190494c06fada78b57
decrypt aes128:19fff121fe476241cff927dcbe2e25df
decrypt aes192:733c01ccbc9824e6d38397bd42ea6a34
decrypt aes256:ad3ffd31251f40bc4dcfb0d6d4e568fe
经其他工具验证,结果是正确的

相关文章:

javascript实现aes算法(支持微信小程序)

概述&#xff1a; 本代码是本人从c代码上转换成的javascript代码&#xff0c;并测试验证通过的。代码比较长1000多行&#xff0c;考虑放其他地方要么要会员要么容易关闭&#xff0c;不容易被需要的获取到&#xff0c;故直接贴在本文档下面的章节&#xff0c;功能代码。 测试平…...

Centos系统新增网卡后获取不到网卡的IP地址解决方法

一、问题描述 当我们给Centos系统添加了新的网卡后,使用查看IP地址命令【ip addr】时,发现新网卡没有获取到对应的IP地址信息,如下图所示: 二、解决方法 有两种解决方法:一种是自动获取IP地址;另外一种是手动配置IP地址; 2.1、自动获取IP地址 #自动获取网卡的IP地址命…...

U-net医学分割网络——学习笔记

《U-Net: Convolutional Networks for Biomedical Image Segmentation》 一、提出背景 U-Net 的提出是为了解决生物医学图像分割的几个关键问题&#xff1a;需要像素级的精确分割、标注数据稀缺、滑动窗口方法效率低以及多尺度特征融合的需求。U-Net 通过对称的 U 型全卷积结…...

CIM+全场景应用,铸就智慧城市发展新篇

在数字化浪潮的推动下&#xff0c;智慧城市建设正成为全球城市发展的新趋势。而CIM&#xff08;城市信息模型&#xff09;作为智慧城市建设的核心&#xff0c;正以其强大的数据集成和分析能力&#xff0c;引领着城市发展的新篇章。今天&#xff0c;让我们一起探讨CIM全场景应用…...

ts:对象数组的简单使用

ts中对象数组的简单使用 一、主要内容说明二、例子1、源码12、源码1运行效果 三、结语四、定位日期 一、主要内容说明 平常ts创建数组的格式如下&#xff1a; let array:string[]["元素1","元素2","元素3","元素3","元素4"…...

当我们在微服务中使用API网关时,它是否会成为系统的瓶颈?这种潜在的瓶颈如何评估和解决?如何在微服务架构中保证高效请求流量?|API网关|微服务|异步处理

目录 1. API网关在微服务中的角色与重要性 2. API网关瓶颈的评估 2.1 请求延迟分析 2.2 并发请求量监控 2.3 内存和CPU使用情况 2.4 限流和熔断机制评估 2.5 日志分析 3. API网关瓶颈的解决方案 3.1 缓存机制优化 3.2 负载均衡优化 3.3 异步处理与消息队列 3.4 限流…...

微服务设计模式 - 特性标志(Feature Flags)

微服务设计模式 - 特性标志&#xff08;Feature Flags&#xff09; 定义 特性标志&#xff08;Feature Flags&#xff09;&#xff0c;又称特性开关&#xff08;Feature Toggles&#xff09;&#xff0c;是一种常见的云计算设计模式&#xff0c;允许开发人员通过配置动态地打开…...

故障诊断 | MTF-TLSSA-DarkNet-GRU-MSA迁移学习故障识别程序(t分布+莱维飞行改进麻雀优化)

故障诊断 | 故障诊断实例代码 目录 故障诊断 | 故障诊断实例代码效果一览基本介绍程序设计参考资料 效果一览 基本介绍 利用了迁移学习和多项技术改进&#xff0c;包括麻雀搜索法、DarkNet19、GRU、多头注意力机制等&#xff0c;以提高故障识别的准确性和效率 模型框架&#x…...

【mysql 进阶】2-1. MySQL 服务器介绍

MySQL 服务器简介 通常所说的 MySQL 服务器指的是mysqld程序&#xff0c;当运⾏mysqld后对外提供MySQL 服务&#xff0c;这个专题的内容涵盖了以下关于MySQL 服务器以及相关配置的内容&#xff0c;包括&#xff1a; 服务器⽀持的启动选项。可以在命令⾏和配置⽂件中指定这些选…...

基于Qt的多线程并行和循序运行实验Demo

致谢&#xff08;Acknowledgement&#xff09;&#xff1a; 感谢Youtube博主Qt With Ketan与KDAB精心录制的Qt多线程处理应用教程&#xff0c;感谢Bilibili博主爱编程的大丙对Qt多线程与线程池内容深入浅出的讲解。 一、计算机线程相关概念 线程概念[1]&#xff1a; 在计算机科…...

机器视觉-相机、镜头、光源(总结)

目录 1、机器视觉光源概述 2、光源的作用 3、光谱 4、工业场景常见光源 4.1、白炽灯 4.2、卤素灯 4.3、 荧光灯 4.4、LED灯 4.5、激光灯 5、光源的基本性能 5.1、光通量 5.2、光效率 5.3、发光强度 5.4、光照度 5.5、均匀性 5.6、色温 5.7、显色性 6、基本光学…...

第六十二周周报 HestGCL

文章目录 week 62 HestGCL摘要Abstract1. 题目2. Abstract3. 文献解读3.1 Introduction3.2 创新点 4. 网络结构4.1 基础4.2 HestGCL4.2.1 图的构造和数据的预处理4.2.2 双视图异构时空图神经网络4.2.3 预测与优化 5. 实验过程5.1 实验设置 6. 结论参考文献 week 62 HestGCL 摘…...

存储期类别

文章目录 前言一、自动存储期&#xff08;Automatic Storage Duration&#xff09;二、静态存储期&#xff08;Static Storage Duration&#xff09;三、动态存储期&#xff08;Dynamic Storage Duration&#xff09;四、线程存储期&#xff08;Thread Storage Duration&#x…...

开源模型应用落地-Qwen2-VL-7B-Instruct-vLLM-OpenAI API Client调用

一、前言 学习Qwen2-VL &#xff0c;为我们打开了一扇通往先进人工智能技术的大门。让我们能够深入了解当今最前沿的视觉语言模型的工作原理和强大能力。这不仅拓宽了我们的知识视野&#xff0c;更让我们站在科技发展的潮头&#xff0c;紧跟时代的步伐。 Qwen2-VL 具有卓越的图…...

风电叶片损伤YOLO检测数据集(猫脸码客第229期)

风电叶片损伤检测&#xff1a;为清洁能源保驾护航 一、风电叶片&#xff1a;清洁能源的关键组件 风电叶片作为风力发电的核心组件&#xff0c;在将风能转化为电能的过程中起着至关重要的作用。它犹如巨大的风车翅膀&#xff0c;捕捉流动的风&#xff0c;将其转化为机械能&…...

修改 RN 打包后生成的app-release 安装包的名称

在React Native项目中&#xff0c;修改打包后生成的Android app-release.apk 安装包的名称通常涉及修改Android的构建配置。以下是详细步骤&#xff1a; 修改Android打包后的APK名称 找到build.gradle文件&#xff1a; 打开你的React Native项目中的android/app/build.gradle文…...

大模型EfficientSam用于图像语义分割自动标注

安装labelme Labelme安装及使用教程-CSDN博客 pip install labelme -i https://pypi.tuna.tsinghua.edu.cn/simple 在安装的过程中因为会需要pyqt5 error: subprocess-exited-with-error Building wheel for PyQt5-sip (pyproject.toml) did not run successfully. │ exit …...

一个关于@JsonIgnore的isxxx()问题

一个关于JsonIgnore的问题 版本:2.13.5 <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><optional>true</optional></dependency>代码&#xff1a; Data public clas…...

Django-cookie,session

Cookie简介 Cookie&#xff0c;有时也用Cookies&#xff0c;是指web程序为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据&#xff08;通常经过加密&#xff09;&#xff0c;一般是以键值对的形式存在&#xff0c;Cookie具有不可跨域名性 Cookie是http协议中…...

HarmonyOS开发 - 本地持久化之实现LocalStorage支持多实例

用户首选项为应用提供Key-Value键值型的数据处理能力&#xff0c;支持应用持久化轻量级数据&#xff0c;并对其修改和查询。数据存储形式为键值对&#xff0c;键的类型为字符串型&#xff0c;值的存储数据类型包括数字型、字符型、布尔型以及这3种类型的数组类型。 在上一篇中&…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

五子棋测试用例

一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏&#xff0c;有着深厚的文化底蕴。通过将五子棋制作成网页游戏&#xff0c;可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家&#xff0c;都可以通过网页五子棋感受到东方棋类…...