private void button5_Click(object sender, EventArgs e) { //GOST 28147-89 ConvertTextIn2 convertTextIn2 = new ConvertTextIn2(); dataGridView5 = convertTextIn2.GetDataGridView(textBox4.Text, dataGridView5); string[] textbloki = convertTextIn2.blokiIn2; dataGridView4 = convertTextIn2.GetDataGridView(textBox5.Text, dataGridView4); string[] keybloki = convertTextIn2.blokiIn2; dataGridView6.Rows.Clear(); dataGridView6.Rows.Add(10); dataGridView6.Rows[0].Cells[0].Value = "L0"; dataGridView6.Rows[1].Cells[0].Value = "R0"; dataGridView6.Rows[2].Cells[0].Value = "X0"; for (int i = 0; i < textbloki.Length / 2; i++) { dataGridView6.Rows[0].Cells[i * 2 + 1].Value = textbloki[i].Substring(0, 4); dataGridView6.Rows[0].Cells[i * 2 + 2].Value = textbloki[i].Substring(4, 4); dataGridView6.Rows[1].Cells[i * 2 + 1].Value = textbloki[i + (textbloki.Length / 2)].Substring(0, 4); dataGridView6.Rows[1].Cells[i * 2 + 2].Value = textbloki[i + (textbloki.Length / 2)].Substring(4, 4); dataGridView6.Rows[2].Cells[i * 2 + 1].Value = keybloki[i].Substring(0, 4); dataGridView6.Rows[2].Cells[i * 2 + 2].Value = keybloki[i].Substring(4, 4); } long R0 = Convert.ToInt64(textbloki[4] + textbloki[5] + textbloki[6] + textbloki[7], 2); long X0 = Convert.ToInt64(keybloki[0] + keybloki[1] + keybloki[2] + keybloki[3], 2); string R0plusX0 = Convert.ToString((R0 + X0) % Convert.ToInt64(Math.Pow(2, 32)), 2); dataGridView6.Rows[3].Cells[0].Value = "(R0+X0) mod (2^32)"; dataGridView6.Rows[4].Cells[0].Value = "номера блоков"; dataGridView6.Rows[5].Cells[0].Value = "значения блоков"; dataGridView6.Rows[6].Cells[0].Value = "заполнение блоков"; dataGridView6.Rows[7].Cells[0].Value = "результат"; string f = ""; for (int i = 0; i < textbloki.Length; i++) { dataGridView6.Rows[3].Cells[i + 1].Value = R0plusX0.Substring(i * 4, 4); dataGridView6.Rows[4].Cells[i + 1].Value = 8 - i; dataGridView6.Rows[5].Cells[i + 1].Value = Convert.ToInt32(dataGridView6.Rows[3].Cells[i + 1].Value.ToString(), 2); dataGridView6.Rows[6].Cells[i + 1].Value = sBloki[Convert.ToInt32(dataGridView6.Rows[5].Cells[i + 1].Value), Convert.ToInt32(dataGridView6.Rows[4].Cells[i + 1].Value) - 1]; dataGridView6.Rows[7].Cells[i + 1].Value = Convert.ToString(Convert.ToInt32(dataGridView6.Rows[6].Cells[i + 1].Value), 2); while (dataGridView6.Rows[7].Cells[i + 1].Value.ToString().Length < 4) { dataGridView6.Rows[7].Cells[i + 1].Value = "0" + dataGridView6.Rows[7].Cells[i + 1].Value; } f += dataGridView6.Rows[7].Cells[i + 1].Value; } f = f.Substring(11) + f.Substring(0, 11); dataGridView6.Rows[8].Cells[0].Value = "f(R0,X0)"; dataGridView6.Rows[9].Cells[0].Value = "(f(R0,X0) + L0) mod 2"; for (int i = 0; i < textbloki.Length; i++) { dataGridView6.Rows[8].Cells[i + 1].Value = f.Substring(i * 4, 4); for (int k = 0; k < 4; k++) { int L0 = Convert.ToInt32(dataGridView6.Rows[0].Cells[i + 1].Value.ToString().Substring(k, 1)); int f2 = Convert.ToInt32(dataGridView6.Rows[8].Cells[i + 1].Value.ToString().Substring(k, 1)); dataGridView6.Rows[9].Cells[i + 1].Value += ((L0 + f2) % 2).ToString(); } } }
private void button1_Click(object sender, EventArgs e) { //DES ConvertTextIn2 convertTextIn2 = new ConvertTextIn2(); dataGridView1 = convertTextIn2.GetDataGridView(textBox1.Text, dataGridView1); string[] textbloki = convertTextIn2.blokiIn2; dataGridView2 = convertTextIn2.GetDataGridView(textBox2.Text, dataGridView2); string[] keybloki = convertTextIn2.blokiIn2; int[] perestav1 = { 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 }; dataGridView8.Rows.Clear(); dataGridView9.Rows.Clear(); dataGridView10.Rows.Clear(); dataGridView8.Rows.Add(4); dataGridView9.Rows.Add(9); dataGridView10.Rows.Add(4); dataGridView8.Rows[0].Cells[0].Value = "номера битов"; dataGridView8.Rows[1].Cells[0].Value = "биты"; dataGridView8.Rows[2].Cells[0].Value = "перестановка"; dataGridView8.Rows[3].Cells[0].Value = "результат"; for (int i = 0; i < 64; i++) { dataGridView8.Rows[0].Cells[i + 1].Value = i + 1; dataGridView8.Rows[1].Cells[i + 1].Value = textbloki[i / 8].Substring(i % 8, 1); dataGridView8.Rows[2].Cells[i + 1].Value = perestav1[i]; } for (int i = 0; i < 64; i++) { dataGridView8.Rows[3].Cells[i + 1].Value = dataGridView8.Rows[1].Cells[Convert.ToInt32(dataGridView8.Rows[2].Cells[i + 1].Value)].Value; } dataGridView9.Rows[0].Cells[0].Value = "L"; dataGridView9.Rows[1].Cells[0].Value = "R"; for (int i = 0; i < 32; i++) { dataGridView9.Rows[0].Cells[(i / 4) + 1].Value += dataGridView8.Rows[3].Cells[i + 1].Value.ToString(); dataGridView9.Rows[1].Cells[(i / 4) + 1].Value += dataGridView8.Rows[3].Cells[i + 1 + 32].Value.ToString(); } string key = keybloki[0] + keybloki[1] + keybloki[2] + keybloki[3] + keybloki[4] + keybloki[5]; //string key = "100101011001010101001100100111100101100100111111"; dataGridView9.Rows[2].Cells[0].Value = "расширение блоков"; dataGridView9.Rows[3].Cells[0].Value = "K"; dataGridView9.Rows[4].Cells[0].Value = "F(R, K)."; for (int i = 0; i < 8; i++) { if (i == 0) { dataGridView9.Rows[2].Cells[i + 1].Value = dataGridView9.Rows[1].Cells[8].Value.ToString().Substring(3, 1) + dataGridView9.Rows[1].Cells[1].Value + dataGridView9.Rows[1].Cells[2].Value.ToString().Substring(0, 1); } else { dataGridView9.Rows[2].Cells[i + 1].Value = dataGridView9.Rows[1].Cells[i].Value.ToString().Substring(3, 1) + dataGridView9.Rows[1].Cells[i + 1].Value + dataGridView9.Rows[1].Cells[((i + 1) % 8) + 1].Value.ToString().Substring(0, 1); } dataGridView9.Rows[3].Cells[i + 1].Value = key.Substring(i * 6, 6); for (int k = 0; k < 6; k++) { int R = Convert.ToInt32(dataGridView9.Rows[2].Cells[i + 1].Value.ToString().Substring(k, 1)); int K = Convert.ToInt32(dataGridView9.Rows[3].Cells[i + 1].Value.ToString().Substring(k, 1)); dataGridView9.Rows[4].Cells[i + 1].Value += ((R + K) % 2).ToString(); } } dataGridView9.Rows[5].Cells[0].Value = "N строки"; dataGridView9.Rows[6].Cells[0].Value = "N столбца"; dataGridView9.Rows[7].Cells[0].Value = "значение"; dataGridView9.Rows[8].Cells[0].Value = "результат"; for (int i = 0; i < 8; i++) { dataGridView9.Rows[5].Cells[i + 1].Value = Convert.ToInt32(dataGridView9.Rows[4].Cells[i + 1].Value.ToString().Substring(0, 1) + dataGridView9.Rows[4].Cells[i + 1].Value.ToString().Substring(5, 1), 2); dataGridView9.Rows[6].Cells[i + 1].Value = Convert.ToInt32(dataGridView9.Rows[4].Cells[i + 1].Value.ToString().Substring(1, 4), 2); dataGridView9.Rows[7].Cells[i + 1].Value = S[i, Convert.ToInt32(dataGridView9.Rows[6].Cells[i + 1].Value), Convert.ToInt32(dataGridView9.Rows[5].Cells[i + 1].Value)]; dataGridView9.Rows[8].Cells[i + 1].Value = Convert.ToString(Convert.ToInt32(dataGridView9.Rows[7].Cells[i + 1].Value), 2); while (dataGridView9.Rows[8].Cells[i + 1].Value.ToString().Length < 4) { dataGridView9.Rows[8].Cells[i + 1].Value = "0" + dataGridView9.Rows[8].Cells[i + 1].Value; } } int[] perestav2 = { 40, 8, 48, 16, 56, 24, 64, 32, 39, 7, 47, 15, 55, 23, 63, 31, 38, 6, 46, 14, 54, 22, 62, 30, 37, 5, 45, 13, 53, 21, 61, 29, 36, 4, 44, 12, 52, 20, 60, 28, 35, 3, 43, 11, 51, 19, 59, 27, 34, 2, 42, 10, 50, 18, 58, 26, 33, 1, 41, 9, 49, 17, 57, 25 }; dataGridView10.Rows[0].Cells[0].Value = "номера битов"; dataGridView10.Rows[1].Cells[0].Value = "биты"; dataGridView10.Rows[2].Cells[0].Value = "перестановка"; dataGridView10.Rows[3].Cells[0].Value = "результат"; for (int i = 0; i < 64; i++) { dataGridView10.Rows[0].Cells[i + 1].Value = i + 1; dataGridView10.Rows[2].Cells[i + 1].Value = perestav2[i]; } for (int i = 0; i < 32; i++) { dataGridView10.Rows[1].Cells[i + 1].Value = dataGridView9.Rows[8].Cells[(i / 4) + 1].Value.ToString().Substring(i % 4, 1); dataGridView10.Rows[1].Cells[i + 1 + 32].Value = dataGridView9.Rows[0].Cells[(i / 4) + 1].Value.ToString().Substring(i % 4, 1); } for (int i = 0; i < 64; i++) { dataGridView10.Rows[3].Cells[i + 1].Value = dataGridView10.Rows[1].Cells[Convert.ToInt32(dataGridView10.Rows[2].Cells[i + 1].Value)].Value; } }