Шифр Цезаря: организовать выдачу полного перебора - 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();