Kriptozaštita 2 - Експедиција

/************************************************************************************************

* Назив програма : Експедиција *

* Верзија програма : 1.0 *

* Креиран помоћу : SharpDevelop *

* Аутор програма : Perić Željko *

* Програмски језик : C# *

* Датум : 25.11.2013 *

* Време : 16:10 *

* *

* *

* Опис програма : Програм за шифровање и дешифровање телеграма. *

* Телеграм је обичан уникод текстуални документ, који садржи текст поруке. *

* Да би се програм стартовао телеграм се једноставно одвуче и пусти *

* на сличицу програма Експедиција, после чега се програм стартује аутоматски, *

* отвара телеграм, утврђује да ли је текст у телеграму отворен или шифрован, *

* на основу чега изврши радњу шифровања или дешифровања и снима резултат *

* у нови уникодни текстуални документ. Кључ за шифровање или дешифровање *

* захтева од корисника. Кључ је позитивна целобројна вредност у опсегу од *

* један до приближно шездесетпетхиљада. Опсег варира у зависности које је *

* локално језичко подешавање на компјутеру. Уколико се појави грешка после *

* убацивања кључа вероватно се ради о превеликој вредности која је унета. *

* Утврђивање тачног опсега за вредност кључа није обухваћено овим програмом. *

* Програм прихвата искључиво текст из уникод текстуалних документата. *

* Овакав документ формирате употребом неког од програма за обраду текста *

* који има могућност да сними документ у формату 'Назив документа.txt", *

* с опцијом за одабир формата 'Уникодни текстуални документ', или опцијом за *

* одабир кодног распореда 'Уникод'. На пример програми Писанка или Бележница. *

* *

************************************************************************************************/

using System;

using System.IO;

using System.Text;

namespace Експедиција

{

class Шифрер

{

public static void Main(string[] телеграм)

{

if(телеграм.Length>0)

{

if(телеграм[0].EndsWith(".txt"))

{

Телепринтер Т1=new Телепринтер();

Т1.Отвори_Телеграм(телеграм);

}

}

}

}

class Телепринтер

{

public void Отвори_Телеграм(string[] телеграм)

{

string адреса=string.Empty;

string текст=string.Empty;

адреса=телеграм[0];

текст=File.ReadAllText(адреса);

адреса=адреса.Replace(".txt","");

Console.SetWindowSize(25,5);

Console.SetBufferSize(25,5);

Console.Title=" Непријатељ слуша !";

if(текст.EndsWith("@@@"))

{

текст=Дешифруј_Телеграм(текст);

File.WriteAllText(адреса.Replace("@@@","")+" .txt",текст,Encoding.UTF8);

}

else if(текст.Length>0)

{

текст=Шифруј_Телеграм(текст);

File.WriteAllText(адреса+" @@@.txt",текст,Encoding.UTF8);

}

}

string Дешифруј_Телеграм(string текст)

{

string дешифрованo=string.Empty;

string слово=string.Empty;

int кључ=0;

int дужина=0;

int бројач=0;

int код=0;

Console.WriteLine("Кључ за дешифровање је :");

Console.WriteLine("------------------------");

кључ=УбациКључ(0,2);

дужина=текст.Length-3;

бројач=0;

while(бројач<дужина)

{

код=0;

код=текст[бројач];

код-=кључ;

дешифрованo+=(char)код;

бројач++;

}

return дешифрованo;

}

string Шифруј_Телеграм(string текст)

{

string шифрованo=string.Empty;

string слово=string.Empty;

int кључ=0;

int дужина=0;

int бројач=0;

int код=0;

Console.WriteLine("Кључ за шифровање је :");

Console.WriteLine("----------------------");

кључ=УбациКључ(0,2);

дужина=текст.Length;

бројач=0;

while(бројач<дужина)

{

код=0;

код=текст[бројач];

код+=кључ;

шифрованo+=(char)код;

бројач++;

}

шифрованo+="@@@";

return шифрованo;

}

int УбациКључ(int позиција_x,int позиција_y)

{

const string могући_бројеви="1234567890";

string реч=string.Empty;

string слово=string.Empty;

int дужина=0;

int број=0;

Console.SetCursorPosition(позиција_x,позиција_y);

Console.Write(" ");

Console.SetCursorPosition(позиција_x,позиција_y);

ConsoleKeyInfo тастер=new ConsoleKeyInfo();

while(тастер.Key!=ConsoleKey.Enter||дужина==0)

{

тастер=Console.ReadKey();

if(тастер.Key==ConsoleKey.Backspace||тастер.Key==ConsoleKey.Delete)

{

дужина--;

if(дужина<0)

{

дужина=0;

}

реч=реч.Substring(0,дужина);

Console.SetCursorPosition(позиција_x,позиција_y);

Console.Write(" ");

Console.SetCursorPosition(позиција_x,позиција_y);

Console.Write(реч);

}

else

{

слово=тастер.KeyChar.ToString();

if(могући_бројеви.Contains(слово))

{

дужина++;

if(дужина<6)

{

реч=реч+слово;

}

else

{

дужина=5;

Console.SetCursorPosition(позиција_x,позиција_y);

Console.Write(" ");

Console.SetCursorPosition(позиција_x,позиција_y);

Console.Write(реч);

}

}

else if(!могући_бројеви.Contains(слово))

{

Console.SetCursorPosition(позиција_x,позиција_y);

Console.Write(" ");

Console.SetCursorPosition(позиција_x, позиција_y);

Console.Write(реч);

}

}

}

број=int.Parse(реч.ToString());

return број;

}

}

}

/************************************************************************

* Program Licence : *

* *

* Copyright 2013 , Perić Željko *

* (periczeljkosmederevo@yahoo.com) *

* *

* According to it's main purpose , this program is licenced *

* under the therms of 'Free Software' licence agreement. *

* *

* If You do not know what those therms applies to *

* please read explanation at the following link : *

* (http://www.gnu.org/philosophy/free-sw.html.en) *

* *

* Since it is Free Software this program has no warranty of any kind. *

************************************************************************

* Ethical Notice : *

* *

* It is not ethical to change program code signed by it's author *

* and then to redistribute it under the same author name , *

* especially if it is incorrect. *

* *

* It is recommended that if you make improvement in program code , *

* to make remarks of it and then to sign it by Your's name , *

* for further redistribution as new major version of program. *

* *

* Author name and references of old program code version should be *

* kept , for tracking history of program development. *

* *

* For any further information please contact code author at his email. *

************************************************************************/

/************************************

* List Of Revisions *

************************************

* *

* *

* *

************************************/