Шифр Цезаря: организовать выдачу полного перебора - C#

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

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

Здравствуйте, имеется код Шифра Цезаря с ключом, подскажите,как организовать выдачу полного перебора, т.е. чтобы не было ключа и показывало каждый вариант сдвига.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace cezar
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = 1, key = 1;

            Console.WriteLine("Введите слово,которое нужно зашифровать:");
            string s = Console.ReadLine();
 
            Console.WriteLine("Введите ключ:");
            key = Convert.ToInt32(Console.ReadLine());
 
            string s1 = "";

            string alfphabet = "АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЪЭЮЯ";
 
            int m = alfphabet.Length; 
 
            for (int i = 0; i < s.Length; i++)
            {
                for (int j = 0; j < alfphabet.Length; j++)
                {
                    if (s[i] == alfphabet[j]) 
                    {
                        int temp = j * n + key;
 
                        while (temp >= m)
                            temp -= m;
 
                        s1 = s1 + alfphabet[temp];
                    }
                }
 
            }
 
            Console.WriteLine("Зашифрованное слово:" + s1);
            Console.ReadLine();
        }
    }
}
Уже не нужно.

Решение задачи: «Шифр Цезаря: организовать выдачу полного перебора»

textual
Листинг программы
    class CaesarCipher
        {
            public static string Alphabet { get; set; }
            public static int Shift { private get; set; }
            public static string Encryption(string text )
            {
                text = text.ToLower();
                var res = new StringBuilder();
                for (int i = 0; i < text.Length; i++)
                    for (int j = 0; j < Alphabet.Length; j++)
                        if (text[i] == Alphabet[j]) res.Append(Alphabet[(j + Shift) % Alphabet.Length]);
 
                return res.ToString();
            }
            public static string Decryption(string crypt)
            {
                crypt = crypt.ToLower();
                var res = new StringBuilder();
                for (int i = 0; i < crypt.Length; i++)
                    for (int j = 0; j < Alphabet.Length; j++)
                        if (crypt[i] == Alphabet[j]) res.Append(Alphabet[(j - Shift + Alphabet.Length) % Alphabet.Length]);
 
                return res.ToString();
            }
        }
        static void Main(string[] args)
        {
            CaesarCipher.Alphabet = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
            CaesarCipher.Shift = 3;
            string text = "текст";
            Console.WriteLine("Текст {0}", text);
            string crypt = CaesarCipher.Decryption(text);
            Console.WriteLine("Шифруем текст: {0}", crypt);
            text = " ";
            text = CaesarCipher.Encryption(crypt);
            Console.WriteLine("Дешифруем текст: {0}", text);
 
            CaesarCipher.Alphabet = "abcdefghijklmnopqrstuvwxyz";
            text = "tekst";
            Console.WriteLine("Текст {0}", text);
            crypt = CaesarCipher.Decryption(text);
            Console.WriteLine("Шифруем текст: {0}", crypt);
            text = " ";
            text = CaesarCipher.Encryption(crypt);
            Console.WriteLine("Дешифруем текст: {0}", text);
            Console.ReadKey();

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


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

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

12   голосов , оценка 3.917 из 5