Шифрование методом "решетки" - C#

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

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

Здравствуйте подскажите по какому принципу закидывать буквы в решетки необходимо? вот описание http://cybern.ru/resheto-crypt.html поворот я сделал
static void Main(string[] args)
        {
            string alf = "алексейку"; //алфавит без буквы Ё,Й и буквы Ъ(=Ь)
            char[,] matrix = new char[3, 3]; //создаем и инициализируем массив символов(матрицу)           
            byte k = 0; //позиция в кодовом слове
            int z = 0; //позиция в алфавите
            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 3; j++) //проход всей матрицы
                {
                    matrix[i, j] = alf[z]; //вставляем букву в матрицу
                    z++; //переходим к следующей букве алфавита    
                }
            }
            #region "Выводим на экран матрицу"
            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 3; j++) Console.Write(matrix[i, j] + "  ");//проход всей матрицы
                for (int j2 = 3 - 1; j2 >= 0; j2--) // рядом проходим поворот матрицы повернутой на 90 градусов
                    Console.Write(matrix[j2, i] + "  ");
                Console.WriteLine();
                
            }
            #endregion
            for (int i = 0; i < 3; i++)
            {
                for (int j2 = 0; j2 < 3;j2++) 
                    Console.Write(matrix[j2, 3 - 1 - i]+"  "); //поворот на 270
                    for (int j = 0; j < 3; j++)
                        Console.Write(matrix[3 - 1 - i, 3 - 1 - j] + "  ");//поворот на 360
                Console.WriteLine();
 
            }
            Console.ReadKey();
        }

Решение задачи: «Шифрование методом "решетки"»

textual
Листинг программы
z=0;//смещение в шифруемой строке
for(int r=0;r<4;r++) { //4 поворота решетки
  p=0; //при каждом повороте начинаем использовать ключ заново
  for(int i=0;i<3;i++)
    for(int j=0;j<3;j++){
     c=secret[p] & 3; //берем очередную цифру из ключа
     c=(c+r) % 4; //c-номер квадратика с учетом поворота
     shiftij(i,j,di,dj,c); //определим сдвиг из квадрата 0 в квадрат с
     rotate(i,j,ri,rj,c); //поворот координат на 90с градусов по часовой
     matrix[ri+di,rj+dj]=alf[z];
     z++;
     p++;
   }
}

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


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

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

13   голосов , оценка 4.077 из 5