44 lines
1.2 KiB
C#
44 lines
1.2 KiB
C#
using System;
|
|
|
|
namespace VigenereCipher
|
|
{
|
|
class VCipher
|
|
{
|
|
public string encrypt(string txt, string pw, int d)
|
|
{
|
|
int pwi = 0, tmp;
|
|
string ns = "";
|
|
txt = txt.ToUpper();
|
|
pw = pw.ToUpper();
|
|
foreach (char t in txt)
|
|
{
|
|
if (t < 65) continue;
|
|
tmp = t - 65 + d * (pw[pwi] - 65);
|
|
if (tmp < 0) tmp += 26;
|
|
ns += Convert.ToChar(65 + ( tmp % 26) );
|
|
if (++pwi == pw.Length) pwi = 0;
|
|
}
|
|
|
|
return ns;
|
|
}
|
|
};
|
|
|
|
class Program
|
|
{
|
|
static void Main(string[] args)
|
|
{
|
|
VCipher v = new VCipher();
|
|
|
|
string s0 = "Beware the Jabberwock, my son! The jaws that bite, the claws that catch!",
|
|
pw = "VIGENERECIPHER";
|
|
|
|
Console.WriteLine(s0 + "\n" + pw + "\n");
|
|
string s1 = v.encrypt(s0, pw, 1);
|
|
Console.WriteLine("Encrypted: " + s1);
|
|
s1 = v.encrypt(s1, "VIGENERECIPHER", -1);
|
|
Console.WriteLine("Decrypted: " + s1);
|
|
Console.WriteLine("\nPress any key to continue...");
|
|
Console.ReadKey();
|
|
}
|
|
}
|
|
}
|