class
Program
{
static
void Main(string[]
args)
{
string
d;
do{
Bifid
bfd = new Bifid();
Console.WriteLine("\nBifid Şifreleme");
Console.WriteLine("Açmak için 1");
Console.WriteLine("Şifreleme için 2");
Console.WriteLine("Çıkmak için 5");
d=Console.ReadLine();
if(d=="1"){
string msj;
string don;
Console.WriteLine("Decrypt
yapılacak mesajı girin");
msj = Console.ReadLine();
don=bfd.EncryptDecrypt(msj, false);
Console.Write(don);
}
else
if(d=="2"){
string msj;
string don;
Console.WriteLine("Encrypt
yapılacak mesajı girin");
msj = Console.ReadLine();
don = bfd.EncryptDecrypt(msj,
true);
Console.WriteLine(don);
}
else
if(d=="5")
break;
else
Console.WriteLine("Lütfen seçim yağınız çıkış için 5");
}while(d!="5");
}
}
Bifid Algoritması için bifid şifreleme sınıfım;
public class
Bifid
{
string[,]
KeyMatrix = new string[5,
5];
public
Bifid()
{
BuildKeyMatrix();
}
private
void BuildKeyMatrix()
{
int
k = 65;
for
(int i = 0; i < 5; i++)
{
for (int j = 0; j
< 5; j++)
{
if (k == 74) { k++; } // j’yi
alma (j ascii = 64)
KeyMatrix[i, j]
= ((char)k).ToString();
k++;
}
}
}
public
string EncryptDecrypt(string
Text, bool Encrypt)
{
int
k = 0;
string
CharofMessage = string.Empty;
StringBuilder
sb1 = new StringBuilder();
StringBuilder
sb2 = new StringBuilder();
StringBuilder
sbOut = new StringBuilder();
bool
HasGotChar = false;
while
(k < Text.Length)
{
CharofMessage =
Text.Substring(k, 1);
for (int i = 0; i
< 5; i++)
{
for (int j = 0; j
< 5; j++)
{
if (string.Compare(KeyMatrix[i,
j], CharofMessage, true) == 0)
{
sb1.Append(i.ToString());
if (Encrypt)
sb2.Append(j.ToString());
else
sb1.Append(j.ToString());
HasGotChar = true;
break;
}
}
if (HasGotChar)
{
HasGotChar =
false;
break;
}
}
k++;
}
k = 0;
if
(Encrypt)
{
sb1.Append(sb2.ToString());
while (k < sb1.Length)
{
sbOut.Append(KeyMatrix[Convert.ToInt32(sb1[k].ToString()),
Convert.ToInt32(sb1[k + 1].ToString())]);
k += 2;
}
}
else
{
int SplitNum = (sb1.Length) / 2;
while (k < SplitNum)
{
sbOut.Append(KeyMatrix[Convert.ToInt32(sb1[k].ToString()),
Convert.ToInt32(sb1[k +
SplitNum].ToString())]);
k++;
}
}
return
sbOut.ToString();
}
}
Bu sınıfta üç temel
işlem gerçekleşmektedir. 5x5 boyutundaki matrisin oluşumu. Mesajın şifrelenmesi
ve mesajın çözülmesi.