Skip to content

DES (конзолна апликација у програмском језику C#)

Задатак

Креирајте конзолну апликацију у програмском језику 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);
    }
}