Шифрование (криптография) по алгоритму "трафарет Ришелье" - C#
Формулировка задачи:
Как реализовать шифрование(алгоритм - трафарет Ришелье)?
Решение задачи: «Шифрование (криптография) по алгоритму "трафарет Ришелье"»
textual
Листинг программы
static IEnumerable<string> Swap(string text, string key)
{
var letters = text.Replace(" ", "").ToCharArray();
var swaps = key.Split(new char[] { '(', ')' }, StringSplitOptions.RemoveEmptyEntries);
int curPos = 0;
for(int i = 0; i < swaps.Length; i++)
{
var Encrypted = letters.Skip(curPos).Take(swaps[i].Length).ToArray()
.Zip(swaps[i],(a,b) => new { letter = a, index = b})
.OrderBy(x=>x.index).Select(x=>x.letter).ToArray();
curPos += swaps[i].Length;
yield return new string(Encrypted);
}
}
static void Main(string[] args)
{
var text = "шифр ришелье";
var key = "(231)(4132)(3142)";
Console.WriteLine(string.Join(" ",Swap(text,key)));
}