воскресенье, 10 октября 2010 г.

Урок №5 Алгоритм Виженера

Генерируем таблицу символов:
 private static char[,] genTable()
        {
            char[,] table = new char[26,26];
            for (int i = 0; i < 26; i++)
            {
                int off = i;
                for (int j = 0; j < 26; j++)
                {
                    if (off == 26)
                    {
                        off = 0;
                    }
                    table[i, j] = (char)(97 + off);
                    off++;
                }
            }
            return table;
        }

Шифратор:
      public static string encrypt(string text, string key)
        {
            string ntext =null;
            int k;
            int t;
            char[,] table = genTable();
            for (int i = 0,j = 0; i < text.Length; i++,j++)
            {
                if (j == key.Length) { j = 0; }    
                k = (int)key[j] - 97;
                t = (int)text[i] - 97;
                ntext += Convert.ToString(table[t,k]);
            }         
            return ntext;
        }

Дешифратор
        public static string decrypt(string text,string key)
        {
            string ntext=null;
            int k;
            int t;
            char[,] table = genTable();
            for (int i = 0,j = 0; i < text.Length; i++,j++)
            {
                if (j == key.Length) { j = 0; }    
                k = (int)key[j] - 97;
                t = (int)text[i] - 97;
                for (int y = 0; y < 26; y++)
                {
                    if (table[y, k] == text[i]) { ntext += table[y,0]; break; }
                }
            }
            return ntext;
        }

        

Комментариев нет:

Отправить комментарий