Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 3
Регистрация: 18.11.2014
Сообщений: 48
1

Ошибка с присвоением значения

11.04.2016, 15:12. Показов 1078. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Можете подсказать как решить проблему с присвоением значения в классе Program.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
    class Realize
    {
        private byte G0(byte a, byte b)
        {
            return (byte)((((a + b) % 256) << 2) | (((a + b) % 256) >> 6));
        }
 
        private byte G1(byte a, byte b)
        {
            return (byte)((((a + b + 1) % 256) << 2) | (((a + b + 1) % 256) >> 6));
        }
 
        public byte[] F(byte[] x)
        {
            byte[] y = new byte[4];
            y[1] = G1((byte)(x[0] ^ x[1]), (byte)(x[2] ^ x[3]));
            y[0] = G0(x[0], y[1]);
            y[2] = G0(y[1], (byte)(x[2] ^ x[3]));
            y[3] = G1(y[2], x[3]);
            return y;
        }
 
        private void AddKeyPart(byte[] P, byte[] K)
        {
            for (int i = 0; i < 4; i++)
            {
                P[i] = (byte)(P[i] ^ K[i]);
            }
        }
 
        private byte[] XOR(byte[] a, byte[] b)
        {
            byte[] c = new byte[a.Length];
            for (int i = 0; i < c.Length; i++)
            {
                c[i] = (byte)(a[i] ^ b[i]);
            }
            return c;
        }
        public byte[] Encrypt(byte[] P, byte[][] K)
        {
            byte[] LeftPart = new byte[4];
            byte[] RightPart = new byte[4];
            Array.Copy(P, 0, LeftPart, 0, 4);
            Array.Copy(P, 4, RightPart, 0, 4);
            AddKeyPart(LeftPart, K[6]);
            AddKeyPart(RightPart, K[7]);
            byte[] Round2Left = XOR(LeftPart, RightPart);
            byte[] Round2Right = XOR(LeftPart, F(XOR(Round2Left, K[0])));
            byte[] Round3Left = Round2Right;
            byte[] Round3Right = XOR(Round2Left, F(XOR(Round2Right, K[1])));
            byte[] Round4Left = Round3Right;
            byte[] Round4Right = XOR(Round3Left, F(XOR(Round3Right, K[2])));
            byte[] Round5Left = Round4Right;
            byte[] Round5Right = XOR(Round4Left, F(XOR(Round4Right, K[3])));
            byte[] Round6Left = Round5Right;
            byte[] Round6Right = XOR(Round5Left, F(XOR(Round5Right, K[4])));
 
            byte[] CipherTextLeft = XOR(Round6Left, F(XOR(Round6Right, K[5])));
            byte[] CipherTextRight = XOR(Round6Right, CipherTextLeft);
            byte[] CipherText = new byte[8];
            Array.Copy(CipherTextLeft, 0, CipherText, 0, 4);
            Array.Copy(CipherTextRight, 0, CipherText, 4, 4);
            return CipherText;
        }
 
        public byte[] Decrypt(byte[] P, byte[][] K)
        {
            byte[] LeftPart = new byte[4];
            byte[] RightPart = new byte[4];
            Array.Copy(P, 0, LeftPart, 0, 4);
            Array.Copy(P, 4, RightPart, 0, 4);
 
            byte[] Round6Right = XOR(LeftPart, RightPart);
            byte[] Round6Left = XOR(LeftPart, F(XOR(Round6Right, K[5])));
 
 
            byte[] Round5Right = Round6Left;
            byte[] Round5Left = XOR(Round6Right, F(XOR(Round6Right, K[4])));
 
            byte[] Round4Right = Round5Left;
            byte[] Round4Left = XOR(Round5Right, F(XOR(Round5Right, K[3])));
 
            byte[] Round3Right = Round4Left;
            byte[] Round3Left = XOR(Round4Right, F(XOR(Round4Right, K[2])));
 
            byte[] Round2Right = Round3Left;
            byte[] Round2Left = XOR(Round3Right, F(XOR(Round2Right, K[1])));
 
            byte[] Round1Right = Round2Left;
            byte[] Round1Left = XOR(Round2Right, F(XOR(Round1Right, K[0])));
 
            byte[] TextLeft = Round1Left;
            byte[] TextRight = XOR(Round1Left, Round1Right);
            AddKeyPart(TextLeft, K[6]);
            AddKeyPart(TextRight, K[7]);
            byte[] Text = new byte[8];
            Array.Copy(TextLeft, 0, Text, 0, 4);
            Array.Copy(TextRight, 0, Text, 4, 4);
            return Text;
        }
    }

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 class Program
    {
        static void Main(string[] args)
        {
            byte[] x = new byte[8];
            for(int i = 0; i < 8; i++)
                x[i] = byte.Parse(Console.ReadLine());
            Console.WriteLine();
            byte[][] y = new byte[8][];// как присвоить значение???
 
            Realize real = new Realize();
            Console.WriteLine(real.Encrypt(x, y));
            Console.ReadKey();
        }
 
    }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.04.2016, 15:12
Ответы с готовыми решениями:

Создание поля с get, set и присвоением значения
Здравствуйте. Можно ли как-то одной строкой создать поле, указать у него get, set и сразу...

Поиск каждого значения массива в другом массиве с присвоением id
Помогите пожалуйста разобраться, у меня есть публикации, разбитые по тегам и есть категории....

Вытащить из DateTimePicker часы, минуты, секунды с присвоением их значения переменным int
Как вытащить из DateTimePicker часы, минуты, секунды с присвоением их значения переменным int

Ошибка с присвоением значений к массивам
Значение функции дроби,не могу присвоить к массиву... не получается подсчет ..Помогите плиз..с этим...

3
116 / 115 / 64
Регистрация: 03.06.2013
Сообщений: 582
11.04.2016, 15:24 2
Лучший ответ Сообщение было отмечено tenohero как решение

Решение

tenohero, перебирайте массив y[0] = new byte[сколько вам надо] и потом наполняйте.
1
0 / 0 / 3
Регистрация: 18.11.2014
Сообщений: 48
11.04.2016, 15:29  [ТС] 3
MaxSlim, так и сделал. Вот только выводимый результат не понятен.

Добавлено через 1 минуту
C#
1
2
3
4
5
6
7
byte[] x = new byte[8] { 1, 2, 3, 4, 5, 6, 7, 8 };
            byte[][] y = new byte[8][];
            for (int i = 0; i < 8; i++)
                y[i] = new byte[8] { 0, 0, 0, 0, 0, 0, 0, 0 };
            Realize real = new Realize();
            string s = real.Encrypt(x, y).ToString();
            Console.WriteLine(s);
0
116 / 115 / 64
Регистрация: 03.06.2013
Сообщений: 582
11.04.2016, 15:32 4
tenohero, а смысл делать зубчатый массив, и сделать потом его 8х8

Добавлено через 58 секунд
tenohero, скажиет что вы хотите сделать, и я вам помогу.
0
11.04.2016, 15:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.04.2016, 15:32
Помогаю со студенческими работами здесь

Ошибка с динамическим присвоением свойств
вообщем народ тут проблемка встала, создаю диномически кнопки, НО как присвоить им свойство OnClick...

ошибка с динамическим присвоением свойств 2
Здравствуйте. почитав тему https://www.cyberforum.ru/cpp-builder/thread224911-page3.html не...

Ошибка с присвоением (заменой) в цикле
Недавно открыл для себя Питон и решил начать изучать,пытаюсь посимвольно распарсить строку и...

Ошибка алгоритма с присвоением данных в массив
Добрых суток! Сносно работается с диапазонами. С алгоритмами не было проблем. Но начала работу с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru