Professional Documents
Culture Documents
1.Tema proiectului.............................................................................................2
2. Specificaii ......................................................................................................5
3. Design ...........................................................................................................7
4. Codul aplicaiei ............................................................................................. 11
5. Teste, erori, execuie .................................................................................... 15
6. Bibliografie ................................................................................................... 18
1.Tema proiectului
Prezentul proiect i propune executarea unui program de criptare a unui ir de
caractere introdus de la tastatur, prin trei metode.
Criptarea mesajelor este unul dintre cele mai studiate domenii din zilele noastre.
Complexitatea tehnicilor de criptare i de trimitere a mesajelor crete permanent
pentru a obine o securitate ct mai ridicat a comunicaiilor. Pe parcursul ctorva
episoade, vom prezenta unele dintre cele mai cunoscute modaliti de codificare a
mesajelor.
Criptarea mesajelor i trimiterea lor sub aceast form este utilizat de foarte mult
timp. Din dovezi indirecte unul dintre primele instrumente de criptare decriptare a
fost menionat de poetul grec Archilocus ce a trit n secolul 7 .e.n., numit scytal de
la grecescul (baston). Acesta era utilizat de Spartani i vechii Greci,
constituind un cifru de transpoziie constnd dintr-o fie din piele care odat
nfurat n jurul unui baston de un anumit diametru era inscripionat cu mesajul
de criptat prin desfurarea de pe baston sensul mesajului era ascuns, recipientul
nfura fia pe un baston de un diametru similar decriptnd astfel mesajul. Evident
aceast metod de criptare nu era una dintre cele mai sigure acesta putnd fi uor
decriptat. Unul dintre primii care au folosit tehnici de criptare bazate pe algoritmi
pentru trimiterea mesajelor a fost celebrul mprat roman Cezar. n comunicarea
privat cu o persoan, folosirea unui cod secret poate preveni citirea intenionat
sau neintenionat a mesajelor de ctre cei care intr n posesia acestora, fie pentru
c trebuie s le transporte pn la destinatar, fie pentru c le intercepteaz n timp
ce mesajul este transmis.
Criptarea reprezint o metod prin care un text necriptat (documente, fiiere, fraze,
cuvinte etc.) este transformat, utiliznd anumite metode, ntr-un alt text, numit text
criptat, care se pstreaz n aceast form sau se trimite unei anumite persoane.
Criptarea este utilizat cu scopul de a pstra secretul unei anumite informaii. n
cazul n care informaia criptat ajunge i la alte persoane, altele dect cele care
trebuie s o primeasc sau s o pstreze, nu se poate obine textul original dect
dac este cunoscut tehnica de criptare folosit i, eventual, o parol utilizat n
procesul de criptare.
Criptografia este tiina care folosete matematica pentru a cripta i decripta
informaii; cu alte cuvinte, pentru a securiza informaiile stocate ori transmise.
Reversul medaliei este criptanaliza - tiina analizrii i spargerii codurilor prin care
se codific datele. Cele dou, criptografia i criptanaliza sunt denumite generic
criptologie.
Exist foarte multe tehnici de criptare cunoscute de foarte multe persoane, dar cu
toate acestea, pentru tehnicile avansate, datorit complexitii algoritmilor folosii
pentru codificare, procesul invers, cel de decriptare, este aproape imposibil de
realizat.
2
1
4
1 1
5 6
I N
1
7
1 1 2 2 2 2 2
8 9 0 1 2 3 4
P E R I C O L
A M J .
U I T N O .
O E
2. Specificaii
Dimensiunea sirului prelucrat va fi de maxim 80 de caractere.
Se recomand atenie mrit la introducerea sirului pentru criptare. Nu este
recomandat utilizarea sgeilor, a tastelor Insert, Home, Delete, BackSpace acestea
putnd conduce (datorit particularitilor mediului C) la funcionarea defectuoas a
aplicaiei.
Aplicaia va fi lansat n execuie prin comanda >projcr.exe.
Automat se va ncrca meniul principal:
-== P R O G R A M C R I P T A R E ==-
1. Criptare Caesar
2. Criptare cu doua jumatati
3. Criptare prin interschimbare biti adiacenti
4. Iesire
3. Design
Programul este structurat n 5 funcii:
int afisare_meniu();
//Criptare Caesar
void C_4();
void C_9();
function afisare_meniu
integer opt
write titlu
write lista optiuni
input opt
return opt
end function
10
4. Codul aplicaiei
#include <conio.h>
#include <ctype.h>
#include <stdio.h>
#include <string.h>
#define N 80
//Declarare Functii
int afisare_meniu();
int executa_optiune(int
selectata
void caesar();
void C_4();
void C_9();
void main()
{
int optiune, rezultat;
do
{
optiune=afisare_meniu();
rezultat=executa_optiune(optiune);
}
while(rezultat!=0);
clrscr();
printf("\n\n\n\n\n\n\n\n\n\n
-== Parasim aplicatia ==\n\n\n\n\n\n\n\n\n\n\n");
printf("\nApasati orice tasta pentru a continua ...\n");
getch();
}
int afisare_meniu()
{
int opt;
clrscr();
// Sterge ecranul
// Afiseaza optiunile
printf("
-== P R O G R A M C R I P T A R E ==\n\n\n\n\n\n");
printf("Va rugam sa alegeti una dintre optiuni tastand cifra...\n\n");
printf("1. Criptare Caesar\n");
printf("2. Criptare cu doua jumatati\n");
printf("3. Criptare prin interschimbare biti adiacenti\n");
printf("4. Iesire\n");
11
opt=getch()-'0';
clrscr();
return opt;
}
out_r[strlen(textcfr)]='\0';
//Marchez sfarsitul sirului pentru tiparire
printf("%s",out_r);
printf("\nApasati orice tasta pentru a continua ...\n");
getch();
}
void C_4()
//Criptare cu doua jumatati
{
int i, j;
char out_r[N];
char textcfr[N];
clrscr();
printf("
-== C R I P T A R E D O U A ==-\n");
printf("
-== J U M A T A T I ==-\n\n\n\n\n");
printf("Introduceti textul de criptat:\n");
if(!gets(textcfr))
//Zona in care verific erorile de citire I/O
{
printf("Nu cred ca ai introdus corect...\n");
printf("\nApasati orice tasta pentru a continua ...\n");
getch();
return;
}
i=strlen(textcfr);
//Verific daca sirul are numar par de caractere
if (i%2!=0)
{
textcfr[i]=' ';
//Daca sirul este impar adaug ' ' la sfarsit
textcfr[i+1]='\0';
//Marchez sfarsitul sirului
i++;
}
out_r[i]='\0';
//Marchez sfarsitul sirului in caz ca e par
for(j=0;j<i/2;j++)
{
out_r[2*j+0]=textcfr[j]; //Construim sirul rezultat pentru valorile
pare
out_r[2*j+1]=textcfr[i/2+j];//Construim sirul rezultat pentru valorile impare
}
printf("%s",out_r);
printf("\nApasati orice tasta pentru a continua ...\n");
getch();
}
void C_9()
//Criptare prin interschimbare biti adiacenti
{
unsigned int i,j;
char out_r[N];
13
char textcfr[N];
clrscr();
printf("
-== C R I P T A R E P R I N I N T E R S C H I M B A R E ==-\n");
printf("
-== B I T I A D I A C E N T I ==-\n\n\n\n\n");
printf("Introduceti textul de criptat:\n");
if(!gets(textcfr))
{
printf("Nu cred ca ai introdus corect...\n");
printf("\nApasati orice tasta pentru a continua ...\n");
getch();
return;
}
for(i=0;i<strlen(textcfr);i++)
{
out_r[i]=0;
for(j=0;j<4;j++)
{
out_r[i]+=(textcfr[i] & (1<<(2*j+0)))<<1; //masca pentru bitii pari
out_r[i]+=(textcfr[i] & (1<<(2*j+1)))>>1; // masca pentru bitii impari
}
}
out_r[strlen(textcfr)]='\0';
printf("%s",out_r);
printf("\nApasati orice tasta pentru a continua ...\n");
getch();
}
14
15
16
17
6. Bibliografie
Note de curs
Laboratoar Programarea Calculatoarelor
Proiect Programarea Calculatoarelor
Turbo C++ Octavian Catrina, Iuliana Cojocaru, Ed. Teora ISBN 973-601-106-9
Revista Ginfo Februarie Martie 2002
http://en.wikipedia.org
http://www.scientia.ro/tehnologie
18