Exemple #1
0
        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();
                }
            }
        }
Exemple #2
0
        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;
            }
        }