void SetDefault() { // IP IP = new int[] { 58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4, 62, 54, 46, 38, 30, 22, 14, 6, 64, 56, 48, 40, 32, 24, 16, 8, 57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3, 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7 }; for (int i = 0; i < IP.Length; i++) { IP[i]--; } //for (int i = 0; i < IP.Length; i++) textBox5.Text+= i+ " - "+ IP[i].ToString()+"\r\n"; // E for (int i = 0; i < E.Length; i++) { E[i] = new Eobj(); } E[0].a = 2; E[0].b = 48; E[1].a = 3; E[1].b = -1; E[2].a = 4; E[2].b = -1; E[3].a = 5; E[3].b = 7; E[4].a = 6; E[4].b = 8; E[5].a = 9; E[5].b = -1; E[6].a = 10; E[6].b = -1; E[7].a = 11; E[7].b = 13; E[8].a = 12; E[8].b = 14; E[9].a = 15; E[9].b = -1; E[10].a = 16; E[10].b = -1; E[11].a = 17; E[11].b = 19; E[12].a = 18; E[12].b = 20; E[13].a = 21; E[13].b = -1; E[14].a = 22; E[14].b = -1; E[15].a = 23; E[15].b = 25; E[16].a = 24; E[16].b = 26; E[17].a = 27; E[17].b = -1; E[18].a = 28; E[18].b = -1; E[19].a = 29; E[19].b = 31; E[20].a = 30; E[20].b = 32; E[21].a = 33; E[21].b = -1; E[22].a = 34; E[22].b = -1; E[23].a = 35; E[23].b = 37; E[24].a = 36; E[24].b = 38; E[25].a = 39; E[25].b = -1; E[26].a = 40; E[26].b = -1; E[27].a = 41; E[27].b = 43; E[28].a = 42; E[28].b = 44; E[29].a = 45; E[29].b = -1; E[30].a = 46; E[30].b = -1; E[31].a = 1; E[31].b = 47; for (int i = 0; i < E.Length; i++) { E[i].a--; if (E[i].b != -1) { E[i].b--; } } //for (int i = 0; i < E.Length; i++) textBox5.Text += i + " - " + E[i].a.ToString() +", "+ E[i].b.ToString() + "\r\n"; // K // 00011111 00011111 00011111 00011111 00001110 00001110 00001110 00001110 /*for (int i=3;i<32;i+=8) SetBit(K, i, 1); * * for (int i = 4; i < 32; i += 8) * for (int j = 0; j < 4; j++) SetBit(K, i + j, 1); * * for (int i = 36; i < 64; i += 8) * for (int j = 0; j < 3; j++) SetBit(K, i + j, 1);*/ // 0101010101010101 //for (int i = 7; i < 64; i += 8) SetBit(K, i, 1); // random for (int i = 0; i < 8; i++) { int checkbit = 0; for (int j = 0; j < 7; j++) { int randnext = rand.Next(0, 2); SetBit(K, i * 8 + j, randnext); checkbit ^= randnext; } SetBit(K, i * 8 + 7, checkbit); } textBox5.Text += "K " + WriteBinaryInString(K) + "\r\n"; // PC1 PC1 = new int[] { 57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4 }; for (int i = 0; i < PC1.Length; i++) { PC1[i]--; } //for (int i = 0; i < PC1.Length; i++) textBox5.Text += i + " - " + PC1[i].ToString() + "\r\n"; // PC2 PC2 = new int[] { 14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32 }; for (int i = 0; i < PC2.Length; i++) { PC2[i]--; } //for (int i = 0; i < PC2.Length; i++) textBox5.Text += i + " - " + PC2[i].ToString() + "\r\n"; // LS LS = new int[] { 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1 }; //for (int i = 0; i < LS.Length; i++) textBox5.Text += i + " - " + LS[i].ToString() + "\r\n"; // S table STable = new int[] { 14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7, 0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8, 4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0, 15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13, 15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10, 3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5, 0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15, 13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9, 10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8, 13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1, 13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7, 1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12, 7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15, 13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9, 10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4, 3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14, 2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9, 14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6, 4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14, 11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3, 12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11, 10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8, 9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6, 4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13, 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1, 13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6, 1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2, 6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12, 13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7, 1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2, 7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 13, 5, 8, 2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11 }; /* * for (int i = 0; i < STable.Length; i++) * { * textBox5.Text += STable[i].ToString() + " "; * if (i % 16 == 15) textBox5.Text += "\r\n"; * }*/ // P P = new int[] { 16, 7, 20, 21, 29, 12, 28, 17, 1, 15, 23, 26, 5, 18, 31, 10, 2, 8, 24, 14, 32, 27, 3, 9, 19, 13, 30, 6, 22, 11, 4, 25 }; for (int i = 0; i < P.Length; i++) { P[i]--; } //for (int i = 0; i < P.Length; i++) textBox5.Text += i + " - " + P[i].ToString() + "\r\n"; // Byte[] K0 = GetKey(15); // textBox5.Text += "K0 " + WriteBinaryInString(K0) + "\r\n"; // C for (int i = 0; i < C.Length; i++) { C[i] = (byte)CodeFunc(i); } textBox5.Text += "C " + WriteBinaryInString(C) + "\r\n"; // k k = 7; textBox5.Text += "k " + k + "\r\n"; }
void SetRandom() { // IP for (int i = 0; i < IP.Length; i++) { IP[i] = i; } for (int i = 0; i < IP.Length; i++) { int num = rand.Next(0, IP.Length); int c = IP[i]; IP[i] = IP[num]; IP[num] = c; } //for (int i = 0; i < IP.Length; i++) textBox5.Text+= i+ " - "+ IP[i].ToString()+"\r\n"; // E for (int i = 0; i < E.Length; i++) { E[i] = new Eobj(); } bool second = false; for (int i = 0; i < 48; i++) { int num = rand.Next(0, E.Length); int numcheck = num; while (true) { if (E[num].a == -1) { E[num].a = i; break; } else if (second && E[num].b == -1) { E[num].b = i; break; } num++; if (num >= E.Length) { num = 0; } if (num == numcheck) { second = true; } } } //for (int i = 0; i < E.Length; i++) textBox5.Text += i + " - " + E[i].a.ToString() +", "+ E[i].b.ToString() + "\r\n"; // K for (int i = 0; i < 8; i++) { int checkbit = 0; for (int j = 0; j < 7; j++) { int randnext = rand.Next(0, 2); SetBit(K, i * 8 + j, randnext); checkbit ^= randnext; } SetBit(K, i * 8 + 7, checkbit); } textBox5.Text += "K " + WriteBinaryInString(K) + "\r\n"; // PC1 for (int i = 0; i < PC1.Length; i++) { PC1[i] = i + ((i) / 7); } for (int i = 0; i < PC1.Length; i++) { int num = rand.Next(0, PC1.Length); int c = PC1[i]; PC1[i] = PC1[num]; PC1[num] = c; } //for (int i = 0; i < PC.Length; i++) textBox5.Text += i + " - " + PC[i].ToString() + "\r\n"; // PC2 for (int i = 0; i < PC2.Length; i++) { bool again = true; while (again) { PC2[i] = rand.Next(0, 56); again = false; for (int j = 0; j < i; j++) { if (PC2[j] == PC2[i]) { again = true; } } } } //for (int i = 0; i < PC2.Length; i++) textBox5.Text += i + " - " + PC2[i].ToString() + "\r\n"; // LS for (int i = 0; i < LS.Length; i++) { LS[i] = rand.Next(1, 3); } //for (int i = 0; i < LS.Length; i++) textBox5.Text += i + " - " + LS[i].ToString() + "\r\n"; // S table for (int i = 0; i < 4 * 8; i++) { for (int j = 0; j < 16; j++) { STable[i * 16 + j] = j; } // Перемешивание for (int k = 0; k < 16; k++) { int num = rand.Next(0, 16); int c = STable[i * 16 + k]; STable[i * 16 + k] = STable[i * 16 + num]; STable[i * 16 + num] = c; } } /* * for (int i = 0; i < STable.Length; i++) * { * textBox5.Text += STable[i].ToString() + " "; * if (i % 16 == 15) textBox5.Text += "\r\n"; * }*/ // P for (int i = 0; i < P.Length; i++) { P[i] = i; } for (int i = 0; i < P.Length; i++) { int num = rand.Next(0, P.Length); int c = P[i]; P[i] = P[num]; P[num] = c; } //for (int i = 0; i < P.Length; i++) textBox5.Text += i + " - " + P[i].ToString() + "\r\n"; Byte[] K0 = GetKey(15); textBox5.Text += "K0 " + WriteBinaryInString(K0) + "\r\n"; }