Шифр Виженера: неверный результат шифрования символов - C#
Формулировка задачи:
private static int smesh = (int)'a';//смещение алфавита относительно таблицы юникодов private static int alphLength = 26; public static string Encrypt(String text, String key) { StringBuilder ans = new StringBuilder(); for (int i = 0; i < text.Length; i++) { int num = (text[i] + key[i % key.Length] - 2 * smesh) % alphLength; //в num лежит номер буквы в алфавите char simvol = (char)(num + smesh);//получаем нужный символ ans.Append(simvol); } return ans.ToString(); } public static string Decrypt(String res, String key) { StringBuilder ans = new StringBuilder(); for (int i = 0; i < res.Length; i++) { int num = (res[i] - key[i % key.Length] + alphLength) % alphLength; //обратные преобразования с номером буквы в алфавите char c = (char)(num + smesh); ans.Append(c); } return ans.ToString(); }
Решение задачи: «Шифр Виженера: неверный результат шифрования символов»
textual
Листинг программы
{ private static int smesh = (int)'a';//смещение алфавита относительно таблицы юникодов private static int alphLength = 26; static char[] ExceptSymbols = { 'a', 'b', 'c', 'd', 'e' }; // и такк все буквы public static string Encrypt(String text, String key) { StringBuilder ans = new StringBuilder(); for (int i = 0; i < text.Length; i++) { if (!ExceptSymbols.Contains(text[i])) { ans.Append(text[i]); } else { int num = (text[i] + key[i % key.Length] - 2 * smesh) % alphLength; //в num лежит номер буквы в алфавите char simvol = (char)(num + smesh);//получаем нужный символ ans.Append(simvol); } } return ans.ToString(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д