130 likes | 253 Views
By Team AK Strinu Narcis - Vaduva Gabriel - Marcu Vlad - Dima Cosmin - Butaru Florin. Encrypt & Decrypt Weekend project Siruri de caractere. A fost odata …( sau n-a fost ) . Acum mult timp , doua guverne a doua tari aveau un plan secret pe care trebuiau
E N D
By Team AK StrinuNarcis -Vaduva Gabriel -MarcuVlad -DimaCosmin -Butaru Florin Encrypt & Decrypt Weekend projectSiruri de caractere
A fostodata…(sau n-a fost) Acummulttimp, douaguverne a douatari aveau un plan secret pe care trebuiau sailtrimitaintreelesisaildiscutefara ca altetari saafledespreceestevorba. Au incercatprin diverse metode, dar tot apareauscurgeri de informatii. Intr-o zi, o echipa de informaticieniinteligenti (foarte…) s-au ganditsacodezecumvatextulinformatiei incatdoarstiind un anumit cod de alterare sapotisadescifreziinformatia Si iata cum au procedat: S-au ganditsaiafiecarelitera in parte, sa ii iacodul de caracter sailalterezeprinoperatiimatematice cu un master code, sainlocuiasca caracterulrespectiv din text sisasalvezesirul de caractere sub forma criptata.
Sirul de caracterecriptat: Putereadezlantuita (saudecriptata?) 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…
#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); } } Si astfel s-au hotaratsi s-au pregatitsascrieprogramul. Prima data au stabilitheaderelesi au declaratobiectelefisier (fstream) … siapoi au plecat la bar. Dimineataurmatoare, mahmuri cum erau, dupamultacafeasi Coca Cola, au declaratfunctiaprincipalaintmain{} siau realizatcodulpentrucitirea din fisier a sirului de caractere initial, linie cu linie…Iatace a iesit:
In continuare, au stabilitpozitiaprimeivocale in contextulsirului de caractere initial…eh..un fel de pozitie, caci au hotarat ca programulsadevinaputinmai 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-ivocala?!!”
Urmatorul pas a fostsastabileasca prima parte din master-code • if(reallen%2==0){ • mastercode=reallen/4; • } • else • { • mastercode=(3*reallen)/4; • } • mastercode=mastercode*vocal_pos;
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); Cumvatrebuiausafacacodul de descifraremai compact…sitotusisa fie eficient din punct de vedere al securitatii. Au stabilit ca in loc de semnpentru prima parte din mastercode, sapunainainte de codul de securitateprimarsapunaliterele N si P, exact ca in planul initial. Au maiadaugat la planul initial si un cod de utilizator, cacialtfeldecriptareaarfifostpreasimplasimuncalorarfifostinutila. Acest cod de utilizator era adaugat la inceputul master-cod-ului final, chiarinainte de caracterulpentrusemn. Toateacestepozitionarisuntfolositedoarpentruutilizareaulterioara a codului ca intreg. Un astfel de cod araveaurmatoarea forma: 123N78sau123P78 123 – user code, selectat de utilizator N / P – Negativ / Pozitiv 78 – Master code, calculat in pasul anterior
Mai trebuiausaalterezefiecarecaracter din sir duparegulaaleasasisalvareanoului sir intr-un fisier text…binebine…siafisareapeecran. 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..sigata, au zisei… Dar au uitatceva: de criptat au reusitsacriptezetextul, dardecriptarea?
Si s-au dusbaietiinostrii la guvernsaisiprezintecreatia. Au lasatapoiproiectul, urmandsa fie contactatidacaguvernulvaalegeproiectullorpentrucriptareainformatiei. Peste 3 zile…. Au primit un mail de la guvern in care scria: Contactati-ne dupacevetidecodaacest sir de caracterecodat cu aplicatiavoastra. Codul de decodare nu vi-l vomda, vatrebuisailaflativoi. 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 gasitcodul, s-au grabitsadecodezetextul ca sapoataaflamesajulatat de important trimischiar de la guvern… Si iatace au aflat: Daca cititi acest mesaj, sunteti CONCEDIATI! Pai ori criptam ori numai criptam...