| ²é¿´: 847 | »Ø¸´: 6 | ||
| µ±Ç°Ö»ÏÔʾÂú×ãÖ¸¶¨Ìõ¼þµÄ»ØÌû£¬µã»÷ÕâÀï²é¿´±¾»°ÌâµÄËùÓлØÌû | ||
zx521½ð³æ (СÓÐÃûÆø)
|
[ÇóÖú]
AES»òDES¼ÓÃÜ
|
|
| ÇóÒ»¸öÓÃC»òC++±à³ÌʵÏÖµÄDES»òAESËã·¨µÄ¼ÓÃÜ¡£³ÌÐòÖÐÒªÓнÏÏêϸµÄ×¢½â¡£Ð»Ð»¸÷λ¸ßÊÖ´óÄã¡ |
» ²ÂÄãϲ»¶
¼ÆËã»ú¡¢0854µç×ÓÐÅÏ¢£¨085401-058412£©µ÷¼Á
ÒѾÓÐ4È˻ظ´
»ù½ðÉ걨
ÒѾÓÐ3È˻ظ´
¹ú×ÔÈ»ÉêÇëÃæÉÏÄ£°å×îÐÂ2026°æ³öÁËÂð£¿
ÒѾÓÐ9È˻ظ´
äåµÄ·´Ó¦ÒºÍÑÉ«
ÒѾÓÐ6È˻ظ´
ÄÉÃ×Á£×ÓÁ£¾¶µÄ²âÁ¿
ÒѾÓÐ7È˻ظ´
³£Ä격ʿÕÐÊÕ(˫һÁ÷£¬¹¤¿Æ)
ÒѾÓÐ4È˻ظ´
ÍÆ¼öÒ»±¾Êé
ÒѾÓÐ10È˻ظ´
²ÎÓëÏÞÏî
ÒѾÓÐ5È˻ظ´
ÓÐûÓÐÈËÄܸøµã½¨Òé
ÒѾÓÐ5È˻ظ´
¼ÙÈçÄãµÄÑо¿ÉúÌá³ö²»ºÏÀíÒªÇó
ÒѾÓÐ12È˻ظ´
» ±¾Ö÷ÌâÏà¹Ø¼ÛÖµÌùÍÆ¼ö£¬¶ÔÄúͬÑùÓаïÖú:
Ó²Å̼ÓÃÜÈí¼þV7.1£¨º¬ºº»¯°ü£©¡¾Ô´´¡¿
ÒѾÓÐ38È˻ظ´

jjdg
°æÖ÷ (ÖªÃû×÷¼Ò)
- ³ÌÐòÇ¿Ìû: 9
- Ó¦Öú: 223 (´óѧÉú)
- ¹ó±ö: 3.926
- ½ð±Ò: 51003.4
- ºì»¨: 238
- Ìû×Ó: 7227
- ÔÚÏß: 474.2Сʱ
- ³æºÅ: 27000
- ×¢²á: 2003-10-21
- רҵ: Ò©Îï´úлÓëÒ©ÎﶯÁ¦Ñ§
- ¹ÜϽ: ³ÌÐòÓïÑÔ

3Â¥2013-03-11 00:42:11
fdesheng
ľ³æ (ÕýʽдÊÖ)
- Ó¦Öú: 6 (Ó×¶ùÔ°)
- ½ð±Ò: 6360.3
- Ìû×Ó: 325
- ÔÚÏß: 106.7Сʱ
- ³æºÅ: 1315486
- ×¢²á: 2011-06-04
- ÐÔ±ð: GG
- רҵ: ¹âѧ
¡¾´ð°¸¡¿Ó¦Öú»ØÌû
¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï
¸Ðл²ÎÓ룬ӦÖúÖ¸Êý +1
jjdg: ½ð±Ò+1, ¸Ðл²ÎÓë 2013-03-11 00:41:33
zx521: ½ð±Ò+20, ¡ï¡ï¡ïºÜÓаïÖú, Õâ¸öÍøÕ¾²»´í£¬Ð»Ð»Ìáʾ 2013-03-11 17:23:58
¸Ðл²ÎÓ룬ӦÖúÖ¸Êý +1
jjdg: ½ð±Ò+1, ¸Ðл²ÎÓë 2013-03-11 00:41:33
zx521: ½ð±Ò+20, ¡ï¡ï¡ïºÜÓаïÖú, Õâ¸öÍøÕ¾²»´í£¬Ð»Ð»Ìáʾ 2013-03-11 17:23:58
| ¿ÉÒÔÏÂÔØmiracl¿â£¬ÀïÃæºÃÏñÓС£¡£¡£ÄêǰÓùý£¬²»¹ý²»ÊÇÓõÄDESËùÒÔ²»ÊǺÜÁ˽⣬Äã¿ÉÒÔGoogle»òbaiduËÑһϿ´¿´¡£»¹ÓоÍÊÇ»¹ÓбðµÄÒ²¿ÉÒÔ×Ô¼ºËÑ£¬¾ßÌå¼Ç²»Çå³þÁË¡£ |
2Â¥2013-03-10 22:44:37
137282855
Òø³æ (³õÈëÎÄ̳)
- Ó¦Öú: 2 (Ó×¶ùÔ°)
- ½ð±Ò: 336.7
- ºì»¨: 2
- Ìû×Ó: 38
- ÔÚÏß: 22.6Сʱ
- ³æºÅ: 1821308
- ×¢²á: 2012-05-16
- רҵ: ¼ÆËã»úÍøÂç
¡¾´ð°¸¡¿Ó¦Öú»ØÌû
¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï
¸Ðл²ÎÓ룬ӦÖúÖ¸Êý +1
zx521: ½ð±Ò+20, ¡ïÓаïÖú, àÅ£¬Å¬Á¦ÕÒÄØ 2013-03-11 17:23:01
¸Ðл²ÎÓ룬ӦÖúÖ¸Êý +1
zx521: ½ð±Ò+20, ¡ïÓаïÖú, àÅ£¬Å¬Á¦ÕÒÄØ 2013-03-11 17:23:01

4Â¥2013-03-11 08:57:49
bear7788
гæ (³õÈëÎÄ̳)
- Ó¦Öú: 1 (Ó×¶ùÔ°)
- ½ð±Ò: 4.4
- Ìû×Ó: 8
- ÔÚÏß: 1.5Сʱ
- ³æºÅ: 1530070
- ×¢²á: 2011-12-09
- ÐÔ±ð: GG
- רҵ: ¼ÆËã»úÈí¼þ
¡¾´ð°¸¡¿Ó¦Öú»ØÌû
¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï
¸Ðл²ÎÓ룬ӦÖúÖ¸Êý +1
zx521: ½ð±Ò+40, ¡ï¡ï¡ïºÜÓаïÖú, Äܲ»ÄÜ´øµã×¢ÊÍ£¬ÓеãÉî- -»¹ÊÇллÁË 2013-03-11 17:25:31
¸Ðл²ÎÓ룬ӦÖúÖ¸Êý +1
zx521: ½ð±Ò+40, ¡ï¡ï¡ïºÜÓаïÖú, Äܲ»ÄÜ´øµã×¢ÊÍ£¬ÓеãÉî- -»¹ÊÇллÁË 2013-03-11 17:25:31
|
// AES_3.cpp : Defines the entry point for the DLL application. // #include "stdafx.h" #include "AES_3.h" BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } unsigned char block1[16] = { 0x04,0x00,0x07,0x00, 0x08,0x00,0xde,0x03, 0x6e,0x00,0xdc,0x00, 0x03,0x07,0x04,0x1e }; unsigned char key1[16]= { 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00 }; static const unsigned char S_box[256] = { 99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22, }; static const unsigned char Si_box[256] = { 82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125, }; void __stdcall encrypt(unsigned char *pt,unsigned char *secu_key,unsigned char *ept){ unsigned char rcon,i,j,aux,aux1,aux2,aux3,round_counter; unsigned char key[16],block[16]; for(i=0;i<16;i++) block = pt; for(i=0;i<16;i++) key = secu_key; rcon = 1 ; /*key_addition*/ for(i=0;i<16;i++) block ^= key; round_counter = 0xA; for(j=0;j /*substitution_S*/ for(i=0;i<16;i++) block = S_box[block]; /*enc_shift_row*/ aux = block[1]; block[1] = block[5]; block[5] = block[9]; block[9] = block[13]; block[13] = aux; aux = block[2]; aux1 = block[6]; block[2] = block[10]; block[6] = block[14]; block[10] = aux; block[14] = aux1; aux = block[15]; block[15] = block[11]; block[11] = block[7]; block[7] = block[3]; block[3] = aux; if(j == (round_counter-1)) goto last_round; /*mix_column*/ /*begins with the mix of column 0*/ aux1 = block[0] ^ block[1]; aux = block[0] ^ block[1] ^ block[2] ^ block[3]; aux2 = block[1] ^ block[2]; aux3 = block[2] ^ block[3]; /*calc_xtimes*/ if(aux1<0x80) aux1<<= 1; else aux1 = (aux1<<1) ^ 0x1b; if(aux2<0x80) aux2 <<= 1; else aux2 = (aux2<<1) ^ 0x1b; if(aux3<0x80) aux3 <<= 1; else aux3 = (aux3<<1) ^ 0x1b; block[0] ^= aux ^ aux1; block[1] ^= aux ^ aux2; block[2] ^= aux ^ aux3; block[3] = block[0] ^ block[1] ^ block[2] ^ aux; /*mix of column 1*/ aux1 = block[4] ^ block[5]; aux = block[4] ^ block[5] ^ block[6] ^ block[7]; aux2 = block[5] ^ block[6]; aux3 = block[6] ^ block[7]; /*calc_xtimes*/ if(aux1<0x80) aux1<<= 1; else aux1 = (aux1<<1) ^ 0x1b; if(aux2<0x80) aux2 <<= 1; else aux2 = (aux2<<1) ^ 0x1b; if(aux3<0x80) aux3 <<= 1; else aux3 = (aux3<<1) ^ 0x1b; block[4] ^= aux ^ aux1; block[5] ^= aux ^ aux2; block[6] ^= aux ^ aux3; block[7] = block[4] ^ block[5] ^ block[6] ^ aux; /*mix of column 2*/ aux1 = block[8] ^ block[9]; aux = block[8] ^ block[9] ^ block[10] ^ block[11]; aux2 = block[9] ^ block[10]; aux3 = block[10] ^ block[11]; /*calc_xtimes*/ if(aux1<0x80) aux1<<= 1; else aux1 = (aux1<<1) ^ 0x1b; if(aux2<0x80) aux2 <<= 1; else aux2 = (aux2<<1) ^ 0x1b; if(aux3<0x80) aux3 <<= 1; else aux3 = (aux3<<1) ^ 0x1b; block[8] ^= aux ^ aux1; block[9] ^= aux ^ aux2; block[10] ^= aux ^ aux3; block[11] = block[8] ^ block[9] ^ block[10] ^ aux; /*mix of column 3*/ aux1 = block[12] ^ block[13]; aux = block[12] ^ block[13] ^ block[14] ^ block[15]; aux2 = block[13] ^ block[14]; aux3 = block[14] ^ block[15]; /*calc_xtimes*/ if(aux1<0x80) aux1<<= 1; else aux1 = (aux1<<1) ^ 0x1b; if(aux2<0x80) aux2 <<= 1; else aux2 = (aux2<<1) ^ 0x1b; if(aux3<0x80) aux3 <<= 1; else aux3 = (aux3<<1) ^ 0x1b; block[12] ^= aux ^ aux1; block[13] ^= aux ^ aux2; block[14] ^= aux ^ aux3; block[15] = block[12] ^ block[13] ^ block[14] ^ aux; last_round: /*enc_key_schedule*/ /*calc_s_table_based_values*/ key[0x0] ^= S_box[key[0xD]]; key[0x1] ^= S_box[key[0xE]]; key[0x2] ^= S_box[key[0xF]]; key[0x3] ^= S_box[key[0xC]]; key[0] ^= rcon; if(rcon<0x80) rcon <<= 1; else rcon = (rcon<<1) ^ 0x1b; for(i=0;i<12;i++) key[i+4] ^= key; /*key_addition*/ for(i=0;i<16;i++) block ^= key; } /*end of encrypt*/ for(i=0;i<16;i++) ept = block; } void __stdcall decrypt(unsigned char *ept,unsigned char *secu_key,unsigned char *pt){ unsigned char key[16],block[16]; unsigned char rcon,i,j,aux,aux1,aux2,aux3,round_counter,d0,d1,d2; for(i=0;i<16;i++) block = ept; for(i=0;i<16;i++) key = secu_key; rcon = 1; round_counter = 10; for(j=0;j /*calc_s_table_based_values*/ key[0x0] ^= S_box[key[0xD]]; key[0x1] ^= S_box[key[0xE]]; key[0x2] ^= S_box[key[0xF]]; key[0x3] ^= S_box[key[0xC]]; key[0] ^= rcon; if(rcon<0x80) rcon <<= 1; else rcon = (rcon<<1) ^ 0x1b; for(i=0;i<12;i++) key[i+4] ^= key; } /*end of init_decryption_key*/ rcon = 0x36; /*key_addition*/ for(i=0;i<16;i++) block ^= key; round_counter = 10; /*substitution_Si*/ for(i=0;i<16;i++) block = Si_box[block]; /*dec_shift_row*/ aux = block[0xd]; /*Rotates right row 1 one position*/ block[0xd] = block[9]; block[9] = block[5]; block[5] = block[1]; block[1] = aux; aux = block[0xa]; /*Rotates right row 2 one position*/ aux1 = block[0xe]; block[0xa] = block[2]; block[0xe] = block[6]; block[2] = aux; block[6] = aux1; aux = block[3]; /*Rotates right row 3 one position*/ block[3] = block[7]; block[7] = block[0xb]; block[0xb] = block[0xf]; block[0xf] = aux; /*dec_key_schedule*/ /*first column3 ^= column2*/ key[0xc] ^= key[8]; key[0xd] ^= key[9]; key[0xe] ^= key[0xa]; key[0xf] ^= key[0xb]; /*column2 ^= column1*/ key[8] ^= key[4]; key[9] ^= key[5]; key[0xa] ^= key[6]; key[0xb] ^= key[7]; /*first column1 ^= column0*/ key[4] ^= key[0]; key[5] ^= key[1]; key[6] ^= key[2]; key[7] ^= key[3]; key[0] ^= rcon; if(rcon & 0x1) rcon = 0x80; else rcon >>= 1; /*calc_s_table_based_values*/ key[0x0] ^= S_box[key[0xD]]; key[0x1] ^= S_box[key[0xE]]; key[0x2] ^= S_box[key[0xF]]; key[0x3] ^= S_box[key[0xC]]; /*key_addition*/ for(i=0;i<16;i++) block ^= key; for(j=0;j<(round_counter-1);j++){ /*inv_mix_column*/ /*FIRST column*/ aux = block[0] ^ block[1] ^ block[2] ^ block[3]; aux1 = block[0] ^ block[2]; if(aux1<0x80) aux1 <<= 1; else aux1 = (aux1<<1) ^ 0x1b; aux2 = block[1] ^ block[3]; if(aux2<0x80) aux2 <<= 1; else aux2 = (aux2<<1) ^ 0x1b; aux3 = aux1 ^ aux2; if(aux3<0x80) aux3 <<= 1; else aux3 = (aux3<<1) ^ 0x1b; if(aux3<0x80) aux3 <<= 1; else aux3 = (aux3<<1) ^ 0x1b; aux3 ^= aux; d0 = block[0] ^ block[1] ^ aux1; if(d0<0x80) d0 <<= 1; else d0 = (d0<<1) ^ 0x1b; d1 = block[1] ^ block[2] ^ aux2; if(d1<0x80) d1 <<= 1; else d1 = (d1<<1) ^ 0x1b; d2 = block[2] ^ block[3] ^ aux1; if(d2<0x80) d2 <<= 1; else d2 = (d2<<1) ^ 0x1b; block[0] ^= d0 ^ aux3; block[1] ^= d1 ^ aux3; block[2] ^= d2 ^ aux3; block[3] = block[0] ^ block[1] ^ block[2] ^ aux; /*SECOND column*/ aux = block[4] ^ block[5] ^ block[6] ^ block[7]; aux1 = block[4] ^ block[6]; if(aux1<0x80) aux1 <<= 1; else aux1 = (aux1<<1) ^ 0x1b; aux2 = block[5] ^ block[7]; if(aux2<0x80) aux2 <<= 1; else aux2 = (aux2<<1) ^ 0x1b; aux3 = aux1 ^ aux2; if(aux3<0x80) aux3 <<= 1; else aux3 = (aux3<<1) ^ 0x1b; if(aux3<0x80) aux3 <<= 1; else aux3 = (aux3<<1) ^ 0x1b; aux3 ^= aux; d0 = block[4] ^ block[5] ^ aux1; if(d0<0x80) d0 <<= 1; else d0 = (d0<<1) ^ 0x1b; d1 = block[5] ^ block[6] ^ aux2; if(d1<0x80) d1 <<= 1; else d1 = (d1<<1) ^ 0x1b; d2 = block[6] ^ block[7] ^ aux1; if(d2<0x80) d2 <<= 1; else d2 = (d2<<1) ^ 0x1b; block[4] ^= d0 ^ aux3; block[5] ^= d1 ^ aux3; block[6] ^= d2 ^ aux3; block[7] = block[4] ^ block[5] ^ block[6] ^ aux; /*THIRD column*/ aux = block[8] ^ block[9] ^ block[10] ^ block[11]; aux1 = block[8] ^ block[10]; if(aux1<0x80) aux1 <<= 1; else aux1 = (aux1<<1) ^ 0x1b; aux2 = block[9] ^ block[11]; if(aux2<0x80) aux2 <<= 1; else aux2 = (aux2<<1) ^ 0x1b; aux3 = aux1 ^ aux2; if(aux3<0x80) aux3 <<= 1; else aux3 = (aux3<<1) ^ 0x1b; if(aux3<0x80) aux3 <<= 1; else aux3 = (aux3<<1) ^ 0x1b; aux3 ^= aux; d0 = block[8] ^ block[9] ^ aux1; if(d0<0x80) d0 <<= 1; else d0 = (d0<<1) ^ 0x1b; d1 = block[9] ^ block[10] ^ aux2; if(d1<0x80) d1 <<= 1; else d1 = (d1<<1) ^ 0x1b; d2 = block[10] ^ block[11] ^ aux1; if(d2<0x80) d2 <<= 1; else d2 = (d2<<1) ^ 0x1b; block[8] ^= d0 ^ aux3; block[9] ^= d1 ^ aux3; block[10] ^= d2 ^ aux3; block[11] = block[8] ^ block[9] ^ block[10] ^ aux; /*LAST column*/ aux = block[12] ^ block[13] ^ block[14] ^ block[15]; aux1 = block[12] ^ block[14]; if(aux1<0x80) aux1 <<= 1; else aux1 = (aux1<<1) ^ 0x1b; aux2 = block[13] ^ block[15]; if(aux2<0x80) aux2 <<= 1; else aux2 = (aux2<<1) ^ 0x1b; aux3 = aux1 ^ aux2; if(aux3<0x80) aux3 <<= 1; else aux3 = (aux3<<1) ^ 0x1b; if(aux3<0x80) aux3 <<= 1; else aux3 = (aux3<<1) ^ 0x1b; aux3 ^= aux; d0 = block[12] ^ block[13] ^ aux1; if(d0<0x80) d0 <<= 1; else d0 = (d0<<1) ^ 0x1b; d1 = block[13] ^ block[14] ^ aux2; if(d1<0x80) d1 <<= 1; else d1 = (d1<<1) ^ 0x1b; d2 = block[14] ^ block[15] ^ aux1; if(d2<0x80) d2 <<= 1; else d2 = (d2<<1) ^ 0x1b; block[12] ^= d0 ^ aux3; block[13] ^= d1 ^ aux3; block[14] ^= d2 ^ aux3; block[15] = block[12] ^ block[13] ^ block[14] ^ aux; dec_first_round: /*substitution_Si*/ for(i=0;i<16;i++) block = Si_box[block]; /*dec_shift_row*/ aux = block[0xd]; /*Rotates right row 1 one position*/ block[0xd] = block[9]; block[9] = block[5]; block[5] = block[1]; block[1] = aux; aux = block[0xa]; /*Rotates right row 2 one position*/ aux1 = block[0xe]; block[0xa] = block[2]; block[0xe] = block[6]; block[2] = aux; block[6] = aux1; aux = block[3]; /*Rotates right row 3 one position*/ block[3] = block[7]; block[7] = block[0xb]; block[0xb] = block[0xf]; block[0xf] = aux; /*dec_key_schedule*/ /*first column3 ^= column2*/ key[0xc] ^= key[8]; key[0xd] ^= key[9]; key[0xe] ^= key[0xa]; key[0xf] ^= key[0xb]; /*column2 ^= column1*/ key[8] ^= key[4]; key[9] ^= key[5]; key[0xa] ^= key[6]; key[0xb] ^= key[7]; /*first column1 ^= column0*/ key[4] ^= key[0]; key[5] ^= key[1]; key[6] ^= key[2]; key[7] ^= key[3]; key[0] ^= rcon; if(rcon & 0x1) rcon = 0x80; else rcon >>= 1; /*calc_s_table_based_values*/ key[0x0] ^= S_box[key[0xD]]; key[0x1] ^= S_box[key[0xE]]; key[0x2] ^= S_box[key[0xF]]; key[0x3] ^= S_box[key[0xC]]; /*key_addition*/ for(i=0;i<16;i++) block ^= key; } /*end of for loop*/ for(i=0;i<16;i++) pt = block; } /*end of decrypt*/ |

5Â¥2013-03-11 11:21:53












»Ø¸´´ËÂ¥