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 *
************************************
* *
* *
* *
************************************/