Portál AbcLinuxu, 8. května 2025 20:22

Dotaz: c++ sifrovani

12.4.2013 21:00 marek33
c++ sifrovani
Přečteno: 831×
Odpovědět | Admin
ahoj, muzete mi nekdo prosim vysvetlit co dela tucne napsana cast programu

int main(){
 FILE *f,*g;
 int znak;
 int pocet=0,a,b,c;
 printf("Zadejte tri cisla pro sifrovani: ");
 scanf("%d %d %d",&a,&b,&c);
 f=fopen("original.txt","r");
 g=fopen("sifra.txt","w");
 while((znak=getc(f))!=EOF){
   switch(pocet%3){
     case 0:znak=znak+a; break;
     case 1:znak=znak+b; break;
     case 2:znak=znak+c; break;              
   }
 if (znak>255)
     znak=znak-256;
   putc(znak,g);
   pocet++;                          
 }
 fclose(f);
 fclose(g);
 getchar();
 getchar();   
 return 0;   
}

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

12.4.2013 21:10 potato
Rozbalit Rozbalit vše Re: c++ sifrovani
Odpovědět | | Sbalit | Link | Blokovat | Admin
Vypíše jeden znak do souboru g. Pokud je kód znaku větší než 256 (protože je to výsledek jakéhosi sčítání), tak nejdřív odečte 256.

Což je tedy doslovné převyprávění toho kódu, ale nic záhadného v něm není, takže nic jiného jsi ani moc čekat nemohl...
Řešení 1× (mimi.vx)
rADOn avatar 15.4.2013 14:58 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: c++ sifrovani
Odpovědět | | Sbalit | Link | Blokovat | Admin
Je to naivni implementace vigenerovy sifry pro hardcodovany pocet abeced (tri). Sifrovani probiha v modulo-N aritmetice kde N je delka abecedy. V tomto pripade 256 (velikost charu), a protoze autor toho kodu evidentne nevedel ze mod-256 aritmetiku lze v C dosahnout prostym pretypovanim na char, udelal tu osklivost s odecitanim 256. pocet++ zajistuje prohazovani sifrovacich abeced.

BTW doufam ze nemas v umyslu to nejak pouzivat, jako sifra to nestoji za moc a jako programovani v C je to na zastreleni.
"2^24 comments ought to be enough for anyone" -- CmdrTaco
15.4.2013 16:26 kuka
Rozbalit Rozbalit vše Re: c++ sifrovani
Zminene pretypovani dela sama putc, takze v programu nemusi byt nic. Jsem liny to zkouset, ale kdyz znak == EOF, coz nastane pro prazdny vstupni soubor, tak bych asi cekal, ze to spadne.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.