Sunteți pe pagina 1din 13

ENCRYPT &

DECRYPT
WEEKEND PROJECT
SIRURI DE CARACTERE

By Team AK

Strinu

Narcis
-Vaduva Gabriel
-Marcu Vlad
-Dima Cosmin
-Butaru Florin

A fost odata(sau n-a


fost)
Acum mult timp, doua guverne a doua tari
aveau un plan secret pe care trebuiau
sa il trimita intre ele si sa il discute fara ca alte tari
sa afle despre ce este vorba.
Au incercat prin diverse metode, dar
tot apareau scurgeri de informatii.
Intr-o zi, o echipa de informaticieni inteligenti (foarte)
s-au gandit sa codeze cumva textul informatiei
incat doar stiind un anumit cod de alterare
sa poti sa descifrezi informatia
Si iata cum au procedat:
S-au gandit sa ia fiecare litera in parte, sa ii ia codul de caracter
sa il altereze prin operatii matematice cu un master code, sa inlocuiasca
caracterul respectiv din text si sa salveze sirul de caractere sub forma criptata.

Sirul de caractere criptat:


Puterea dezlantuita (sau decriptata?)
Cum se calculeaza master-code?
Au stabilit ca master-code sa fie calculat ca
produsul dintre (1/4)din lungimea sirului de caractere,
daca este par,
sau 3/4 din lungimea sirului de caractere, daca nu este
par, si prima aparitie
in sirul de caractere a unei vocale.
Apoi, inainte de valoarea numerica a Master-code-ului
se va adauga un numar de 3 cifre selectat de utilizator
si litera P sau N in functie de comparatia valorii numerice
a master-code-ului cu 0 [Pozitiv / Negativ].
La fiecare cod de caracter se aduna (valoarea absoluta a
mastercode)*(semn mastercode)
si se scade usercode daca semn mastercode a fost pozitiv
sau se aduna usercode
daca semn mastercode a fost negativ.

Hmmm

Si astfel s-au hotarat si s-au pregatit sa scrie


programul.
Prima data au stabilit headerele si au declarat
obiectele fisier (fstream) si apoi au plecat la
bar.
Dimineata urmatoare, mahmuri cum erau,
dupa multa cafea si Coca Cola, au declarat
functia principala int main{} si au realizat
codul pentru citirea din fisier a sirului de
caractere initial, linie cu linieIata ce a iesit:

#include<iostream.h>
#include<fstream.h>
#include<string.h>
fstream fin("date.txt", ios::in);
fstream fout("decripted.txt",
ios::out);
int main(){
char s[10000];
char linex[500];
int len;
s[0]=0;
while(!fin.eof()){
fin.getline(linex, 499);
strcat(s, "\n");
strcat(s, linex);
}
}

In continuare,
continuare, au
au stabilit
stabilit pozitia
pozitia primei
primei vocale
vocale in
in
In
contextul sirului
sirului de
de caractere
caractere initialeh..un
initialeh..un fel
fel de
de
contextul
pozitie,
pozitie, caci
caci au
au hotarat
hotarat ca
ca programul
programul sa
sa devina
devina
putin
mai
abstract.
putin mai abstract.

int reallen=strlen(s);
int mastercode;
len=strlen(s)-1;
char vocale[]="aeiouAEIOU";
char *pos=strpbrk(s, vocale);
int vocal_pos=s-pos;

Unde-I vocala?! Unde-i vocala?!!

Urmatorul pas a fost sa stabileasca prima


parte din master-code
if(reallen%2==0){
mastercode=reallen/4;
}
else
{
mastercode=(3*reallen)/4;
}
mastercode=mastercode*vocal_pos;

Cumva trebuiau sa faca codul de descifrare mai


compactsi totusi sa fie eficient din punct de
vedere al securitatii.
Au stabilit ca in loc de semn pentru prima parte din
mastercode, sa puna inainte de codul de securitate
primar sa puna literele N si P, exact ca in planul
initial.
Au mai adaugat la planul initial si un cod de
utilizator, caci altfel decriptarea ar fi fost prea
simpla si munca lor ar fi fost inutila. Acest cod de
utilizator era adaugat la inceputul master-cod-ului
final, chiar inainte de caracterul pentru semn. Toate
aceste pozitionari sunt folosite doar pentru
utilizarea ulterioara a codului ca intreg.

Un astfel de cod ar avea urmatoarea


forma:
123N78 sau 123P78
123 user code, selectat de utilizator
N / P Negativ / Pozitiv
78 Master code, calculat in pasul
anterior

int user_code;
cout<<"Usercode: ";
cin>>user_code;
char signx;
if(mastercode<0)
{
signx='N';
mastercode=mastercode*(-1);
}
else
{
signx='P';
}
char master_final[20];
char usrnr[4], mcode[15];
itoa(user_code, usrnr, 10);
itoa(mastercode, mcode, 10);
strcat(master_final, usrnr);
int sk=strlen(master_final);
master_final[sk]=signx;
strcat(master_final, mcode);
printf("Mastercode: %s\n", master_final);

Mai trebuiau sa altereze fiecare


caracter din sir dupa regula aleasa si
salvarea noului sir intr-un fisier text
bine binesi afisarea pe ecran.
for(int i=0;i<=len;i++){
if(signx=='N'){
s[i]=s[i]+(-mastercode)+user_code;
}
else
{
s[i]=s[i]+mastercode-user_code;
}
}
printf("%s\n", s);
fout.write(s, strlen(s));
system("pause");

Eh..si gata, au zis ei


Dar au uitat ceva: de criptat au reusit
sa cripteze textul, dar decriptarea?

Nici o problema
Inversam procesul
#include<iostream.h>
#include<fstream.h>
#include<string.h>
fstream fin("date.txt", ios::in);
fstream fout("decripted.txt", ios::out);
int main(){
char s[10000];
char linex[500];
while(!fin.eof()){
fin.getline(linex, 499);
strcat(s, "\n");
strcat(s, linex);
}
int reallen=strlen(s);
char code[20];
cout<<"Decrypt code:";
gets(code);
char md[]="NPnp";
char *pos=strpbrk(code, md);
char signx=pos[0];
char user_code[4];
char mastercode[15];
strncpy(user_code, code, pos-code);
user_code[strlen(user_code)]=0;
strncpy(mastercode, pos+1,
strlen(pos+1));
int mcode=atoi(mastercode);
int ucode=atoi(user_code);

if(signx=='p')signx=='P';
if(signx=='n')signx=='N';
for(int i=0;i<=reallen-1;i++){
if(signx=='N'){
s[i]=s[i]-(-mcode)-ucode;
}
else
{
s[i]=s[i]-mcode+ucode;
}
}
printf("%s\n", s+2);
fout.write(s+2, strlen(s));
system("pause");
}

Si s-au dus baietii nostrii la guvern sa isi prezinte creatia.


Au lasat apoi proiectul, urmand sa fie contactati daca guvernul va
alege proiectul lor pentru criptarea informatiei.

Peste 3 zile.
Au primit un mail de la guvern in care scria:
Contactati-ne dupa ce veti decoda acest sir de caractere codat
cu aplicatia voastra. Codul de decodare nu vi-l vom da, va
trebui sa il aflati voi.
Succes!
Text:
C`b`bhshsh`bdrsldr`i+rtmsdshBNMBDCH@SH
O`hnqhbqhos`lnqhmtl`hbqhos`l---

Au cautat.

S-au stresat

S-AU TOT GANDIT

SI AU AFLAT CODUL:
123N124

Fericiti ca au gasit codul, s-au grabit sa decodeze textul ca sa poata afla


mesajul atat de important trimis chiar de la guvern
Si iata ce au aflat:

Daca cititi acest mesaj, sunteti


CONCEDIATI!
Pai ori criptam ori numai criptam...

THE END

S-ar putea să vă placă și