Шифрование методом "решетки" - 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++; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д