Задатак
Креирајте конзолну апликацију у програмском језику C# за шифровање отвореног текста и дешифровање шифрата помоћу DES алгоритма. Користите методе из класе DES из именског простора System.Security.Cryptography
.
Решење
using System;
using System.Security.Cryptography;
using System.Text;
using System.IO;
class DES_sifrovanje_i_desifrovanje
{
public static byte[] Sifruj(string P, byte[] K, byte[] IV)
{
DES des = DES.Create();
MemoryStream mSekvenca = new MemoryStream();
CryptoStream cSekvenca = new CryptoStream(mSekvenca, des.CreateEncryptor(K, IV),
CryptoStreamMode.Write);
byte[] zaSifrovanje = new UnicodeEncoding().GetBytes(P);
cSekvenca.Write(zaSifrovanje, 0, zaSifrovanje.Length);
cSekvenca.FlushFinalBlock();
byte[] C = mSekvenca.ToArray();
cSekvenca.Close();
mSekvenca.Close();
return C;
}
public static string Desifruj(byte[] C, byte[] K, byte[] IV)
{
DES des = DES.Create();
MemoryStream mSekvenca = new MemoryStream(C);
CryptoStream cSekvenca = new CryptoStream(mSekvenca, des.CreateDecryptor(K, IV), CryptoStreamMode.Read);
byte[] zaDesifrovanje = new byte[C.Length];
cSekvenca.Read(zaDesifrovanje, 0, zaDesifrovanje.Length);
return new UnicodeEncoding().GetString(zaDesifrovanje);
}
static void Main()
{
DES des = DES.Create();
Console.Write("Unesi otvoreni tekst: ");
string P = Console.ReadLine();
byte[] C = Sifruj(P, des.Key, des.IV);
Console.WriteLine("Šifrat: {0}", Encoding.UTF8.GetString(C));
string Pdesifrovan = Desifruj(C, des.Key, des.IV);
Console.WriteLine("Otvoreni tekst: {0}", Pdesifrovan);
}
}