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

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Можете подсказать как решить проблему с присвоением значения в классе Program.
Листинг программы
  1. class Realize
  2. {
  3. private byte G0(byte a, byte b)
  4. {
  5. return (byte)((((a + b) % 256) << 2) | (((a + b) % 256) >> 6));
  6. }
  7. private byte G1(byte a, byte b)
  8. {
  9. return (byte)((((a + b + 1) % 256) << 2) | (((a + b + 1) % 256) >> 6));
  10. }
  11. public byte[] F(byte[] x)
  12. {
  13. byte[] y = new byte[4];
  14. y[1] = G1((byte)(x[0] ^ x[1]), (byte)(x[2] ^ x[3]));
  15. y[0] = G0(x[0], y[1]);
  16. y[2] = G0(y[1], (byte)(x[2] ^ x[3]));
  17. y[3] = G1(y[2], x[3]);
  18. return y;
  19. }
  20. private void AddKeyPart(byte[] P, byte[] K)
  21. {
  22. for (int i = 0; i < 4; i++)
  23. {
  24. P[i] = (byte)(P[i] ^ K[i]);
  25. }
  26. }
  27. private byte[] XOR(byte[] a, byte[] b)
  28. {
  29. byte[] c = new byte[a.Length];
  30. for (int i = 0; i < c.Length; i++)
  31. {
  32. c[i] = (byte)(a[i] ^ b[i]);
  33. }
  34. return c;
  35. }
  36. public byte[] Encrypt(byte[] P, byte[][] K)
  37. {
  38. byte[] LeftPart = new byte[4];
  39. byte[] RightPart = new byte[4];
  40. Array.Copy(P, 0, LeftPart, 0, 4);
  41. Array.Copy(P, 4, RightPart, 0, 4);
  42. AddKeyPart(LeftPart, K[6]);
  43. AddKeyPart(RightPart, K[7]);
  44. byte[] Round2Left = XOR(LeftPart, RightPart);
  45. byte[] Round2Right = XOR(LeftPart, F(XOR(Round2Left, K[0])));
  46. byte[] Round3Left = Round2Right;
  47. byte[] Round3Right = XOR(Round2Left, F(XOR(Round2Right, K[1])));
  48. byte[] Round4Left = Round3Right;
  49. byte[] Round4Right = XOR(Round3Left, F(XOR(Round3Right, K[2])));
  50. byte[] Round5Left = Round4Right;
  51. byte[] Round5Right = XOR(Round4Left, F(XOR(Round4Right, K[3])));
  52. byte[] Round6Left = Round5Right;
  53. byte[] Round6Right = XOR(Round5Left, F(XOR(Round5Right, K[4])));
  54. byte[] CipherTextLeft = XOR(Round6Left, F(XOR(Round6Right, K[5])));
  55. byte[] CipherTextRight = XOR(Round6Right, CipherTextLeft);
  56. byte[] CipherText = new byte[8];
  57. Array.Copy(CipherTextLeft, 0, CipherText, 0, 4);
  58. Array.Copy(CipherTextRight, 0, CipherText, 4, 4);
  59. return CipherText;
  60. }
  61. public byte[] Decrypt(byte[] P, byte[][] K)
  62. {
  63. byte[] LeftPart = new byte[4];
  64. byte[] RightPart = new byte[4];
  65. Array.Copy(P, 0, LeftPart, 0, 4);
  66. Array.Copy(P, 4, RightPart, 0, 4);
  67. byte[] Round6Right = XOR(LeftPart, RightPart);
  68. byte[] Round6Left = XOR(LeftPart, F(XOR(Round6Right, K[5])));
  69.  
  70. byte[] Round5Right = Round6Left;
  71. byte[] Round5Left = XOR(Round6Right, F(XOR(Round6Right, K[4])));
  72. byte[] Round4Right = Round5Left;
  73. byte[] Round4Left = XOR(Round5Right, F(XOR(Round5Right, K[3])));
  74. byte[] Round3Right = Round4Left;
  75. byte[] Round3Left = XOR(Round4Right, F(XOR(Round4Right, K[2])));
  76. byte[] Round2Right = Round3Left;
  77. byte[] Round2Left = XOR(Round3Right, F(XOR(Round2Right, K[1])));
  78. byte[] Round1Right = Round2Left;
  79. byte[] Round1Left = XOR(Round2Right, F(XOR(Round1Right, K[0])));
  80. byte[] TextLeft = Round1Left;
  81. byte[] TextRight = XOR(Round1Left, Round1Right);
  82. AddKeyPart(TextLeft, K[6]);
  83. AddKeyPart(TextRight, K[7]);
  84. byte[] Text = new byte[8];
  85. Array.Copy(TextLeft, 0, Text, 0, 4);
  86. Array.Copy(TextRight, 0, Text, 4, 4);
  87. return Text;
  88. }
  89. }
Листинг программы
  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. byte[] x = new byte[8];
  6. for(int i = 0; i < 8; i++)
  7. x[i] = byte.Parse(Console.ReadLine());
  8. Console.WriteLine();
  9. byte[][] y = new byte[8][];// как присвоить значение???
  10. Realize real = new Realize();
  11. Console.WriteLine(real.Encrypt(x, y));
  12. Console.ReadKey();
  13. }
  14. }

Решение задачи: «Ошибка с присвоением значения»

textual
Листинг программы
  1. byte[] x = new byte[8] { 1, 2, 3, 4, 5, 6, 7, 8 };
  2.             byte[][] y = new byte[8][];
  3.             for (int i = 0; i < 8; i++)
  4.                 y[i] = new byte[8] { 0, 0, 0, 0, 0, 0, 0, 0 };
  5.             Realize real = new Realize();
  6.             string s = real.Encrypt(x, y).ToString();
  7.             Console.WriteLine(s);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы