Ошибка с присвоением значения - C#
Формулировка задачи:
Здравствуйте! Можете подсказать как решить проблему с присвоением значения в классе Program.
Листинг программы
- 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;
- }
- }
Листинг программы
- 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();
- }
- }
Решение задачи: «Ошибка с присвоением значения»
textual
Листинг программы
- 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д