Kriptozaštita
Kriptozaštita tekstualnih poruka je izuzetno interesantna oblast sa aspekta programiranja.U pitanju je šifrovanje podataka s ciljem da tačnu informaciju može da vidi samo odabrana osoba. Postoje različiti Algoritmi i rešenja za kriptozaštitu , a dole navedeno je jedno od jednostavnijih. U pitanju je "rotacija" , uvećanje vrednosti ASCII koda za slova u okviru tekstualne poruke za određenu vrednost koja se odredi unosom putem tastature. Sobzirom da je svako slovo na kompjuteru predstavljeno jedinstvenim brojem ASCII kodom ( a = 65 , b = 66 , c = 67 itd) uvećanjem te vrednosti za svako slovo u poruci za određenu vrednost recimo jedan ( a = 65 + 1 postaje slovo b , b = 66 +1 postaje slovo c itd) dobijamo potpuno novu poruku koja je nerazumljiva svima osim onome ko ima ključ za dešifrovanje. Osoba koja treba da pročita poruku mora da ima tekstšifrovane poruke i vrednost ključa za koju se vrši umanjenje vrednosti ASCII koda.Pažnja program samo šifuje podatke , program za dešifrovanje probajte da napravite sami. Potrebno je da se promeni samo jedan karakter u programu Encryption pa da postane Decryption :)) Ukoliko ne ide na dole navedenom linku imate dva programa Encryption i Decryption. Pokušajte da uz pomoć Encryption programa šifrujete poruku, a zatim da je dešifrujete uz pomoć Decryption programa,kao što je prikazano na slici.
Na kraju strane se nalazi link za preuzimanje kompletnog projekta za IDE SharpDevelop C# 4.0. Ukoliko koristite ovo integrisano okruženje, kada preuzmete projekat i otvorite ga možete pogledati kompletan program i menjati ga po želji. Proučite dole prikazan programski kod i sve će vam biti jasno.
/*
* Created by Perić Željko
* periczeljkosmederevo@yahoo.com
* IDE Sharp Develop C#
* Date: 28.11.2011
* Time: 11:20
*
* This is a simple console application for encryption of short
* text messages (up to 255 caracters).It is based on
* increasing of generic ASCII code of letters in text messages
* by value of Rotation_key enterd trough keyboard.
*
* example : Rotation_key = 1
* Message = ABC (ASCII : 65 , 66 , 67)
* Encrypted = BCD (ASCII : 66 ,67 , 68)
*
* Since the value of the ASCII code is limited ,
* so the value of the Rotation_key should be limited
* it is up to you to find min and max values.
* When you do that , given key name will be justified.
*
* !!! The program is not final because it has no part to check
* what exactly user had entered on the keyboard
* there should be try...parse...catch part.
* it is up to you.
* It allso can be modifed to load .txt document,
* encrypt text from it and then send it trough mail,
* for example.
* There is only part of program for encryption,
* the other part for decryption you shuld write
* yourself.Look at this code it should be easy.
* !!!
*
* Good luck and happy learning of C#
*
*/
using System;
namespace Encryption
{
class Program
{
public static void Main(string[] args)
{
//
// variables declaration
//
string Original_Message = "";
string Encrypted_Message = "";
string Original_Message_Letter_String = "";
string Encrypted_Message_Letter_String = "";
string Rotation_key_string = "";
char Original_Message_Letter_Char = ' ';
char Encrypted_Message_Letter_Char = ' ';
int Letter_code = 0;
int Rotation_key_number = 0;
int Message_Lenght = 0;
int Counter = 0;
//
// Hello to user
//
Console.Title = "Encryption program";
Console.SetWindowSize(80,25);
Console.Clear();
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("-------------------------------------------------");
Console.WriteLine(" Program for encryption of text messages");
Console.WriteLine("-------------------------------------------------");
Console.WriteLine("");
//
// Get text message from console
//
Console.WriteLine("Type your message here :");
Console.WriteLine("------------------------");
Original_Message = Console.ReadLine();
Console.WriteLine("");
//
// Get value of rotation key from console
// and transfer it to number
//
Console.WriteLine("Value of rotation key :");
Console.WriteLine("------------------------");
Rotation_key_string = Console.ReadLine();
Rotation_key_number = int.Parse(Rotation_key_string);
Console.WriteLine("------------------------");
Console.WriteLine("");
//
// Encrypt message
//
Message_Lenght = Original_Message.Length;
Counter = 0;
while(Counter < Message_Lenght)
{
Original_Message_Letter_String = Original_Message.Substring(Counter,1);
Original_Message_Letter_Char = char.Parse(Original_Message_Letter_String);
Letter_code = Original_Message_Letter_Char;
Letter_code = Letter_code + Rotation_key_number;
Encrypted_Message_Letter_Char = (char) Letter_code;
Encrypted_Message_Letter_String = Encrypted_Message_Letter_Char.ToString();
Encrypted_Message = Encrypted_Message + Encrypted_Message_Letter_String;
Counter = Counter + 1;
}
//
// Write encrypted message on console
//
Console.WriteLine("Encrypted message");
Console.WriteLine("-------------------------------------------------");
Console.WriteLine(Encrypted_Message);
Console.WriteLine("-------------------------------------------------");
Console.WriteLine("");
//
// End of program
//
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}