Šifrování, dešifrování textu
Delphi & Pascal (česká wiki)
Category: KMP (Club of young programmers)
Author: Tomáš Badin
Program: Sifrovani_textu.pas
File exe: Sifrovani_textu.exe
Author: Tomáš Badin
Program: Sifrovani_textu.pas
File exe: Sifrovani_textu.exe
Zašifrování a dešifrování textu, který se ukládá do textového souboru, také načítání textu ze souboru a jeho zašifrování/dešifrování.
{ SIFROVANI_TEXTU.PAS Copyright (c) Tomas Badin } { Zasifrovani a desifrovani textu, ktery se uklada do textoveho } { souboru, take nacitani textu ze souboru a jeho } { zasifrovani/desifrovani. } { } { Datum:12.06.2008 http://www.trsek.com } program sifrovani_textu; { rocnikova prace } {******************************************} {****** "Rocnikovka" **********} {******************************************} uses crt; { nacteni knihovy } var veta,sifra,x:string; { deklarovani promenych } schranka:text; schranka2: text; schranka3: text; schranka4: text; s2: text; s3:text; sobur3 : string; subur : string; subor : string; soubor: string; sobur : string; sobur2 : string; s: string; i,volba:integer; begin { zacatek programu } clrscr; { vymazani obrazovky } writeln ('*********************************'); { vypsani textu } writeln ('*** Zasifrovani textu do znaku***'); { vypsani textu } writeln ('*********************************'); { vypsani textu } writeln; { preskoceni na dalsi radek } writeln ( ' vyrobil Tomas Badin '); { vypsani textu } repeat { zacatek cyklu } veta:=''; { vymazani hodnot } sifra:=''; { vymazani hodnot } x:= ''; { vymanzani hodnot } subor := ''; { vymazani hodnot } soubor:= ''; { vymazani hodnot } readln; { prazdne cteni } clrscr; { vymazani obrazovky } writeln ('************************************************'); writeln ('******* Hlavni nabidka ********'); writeln ('************************************************'); writeln ('zadej cislo 1 pro sifru'); { oznamuje nam kod pro danou hodnotu } writeln ('zadej cislo 2 pro desifrovani'); { oznamuje nam kod pro danou hodnotu } writeln ('zadej cislo 3 pro zobrazeni znaku'); { oznamuje nam kod pro danou hodnotu } writeln ('zadej cislo 4 pro zasifrovani textu'); { oznamuje nam kod pro danou hodnotu } writeln ('zadej cislo 5 pro desifrovani textu'); { oznamuje nam kod pro danou hodnotu } writeln ('zadej cislo 6 pro ukonceni aplikace'); { oznamuje nam kod pro danou hodnotu } writeln; { preskoceni na dalsi radek } write ('vase volba : '); { pozadovana volba } readln (volba); { zadani cisla z vrchni nabidky } case volba of { case nam rika co se stane pri dane volbe } 1:begin { zacatek prvni volby } ClrScr; { vymazani obrazovky } writeln ('************************************'); { vypsani textu na obrazovku } writeln ('*** zasifrovani abecednich znaku *** '); { vypasani textu na obrazovku } writeln ('************************************'); { vypsani textu na obrazovku } writeln; { preskoceni na dalsi radek } writeln; { preskoceni na dalsi radek } writeln ('zadejte cestu kam se vam ulozi zasifrovany text'); { oznamuje nam co mame udelat } readln (subur); { musime zadat presnou cestu kam chceme aby se nam to do dokumentu ulozilo } Assign (schranka,subur); { vytvoreni textoveho souboru } writeln ('zadej vetu'); { vypsani textu } readln (veta); { mame napsat vetu co chceme zasifrovat } veta:=upcase(veta); { prevede vsechna pismena na velka pismena } for i:=1 to length(veta) do { provadi se cyklus dokud nebudou vsechny znaky prekontrolovany a prevedeny } begin { zacatek cyklu } case veta[i] of { podminka vetveni } 'A': x:=x+'@'; { pokud se objevi dany znak prevedeho na jiny znak } 'B': x:=x+'$'; { pokud se objevi dany znak prevedeho na jiny znak } 'C': x:=x+'!'; { pokud se objevi dany znak prevedeho na jiny znak } 'D': x:=x+'~'; { pokud se objevi dany znak prevedeho na jiny znak } 'E': x:=x+'ř'; { pokud se objevi dany znak prevedeho na jiny znak } 'F': x:=x+'|'; { pokud se objevi dany znak prevedeho na jiny znak } 'G': x:=x+')'; { pokud se objevi dany znak prevedeho na jiny znak } 'H': x:=x+'('; { pokud se objevi dany znak prevedeho na jiny znak } 'I': x:=x+'*'; { pokud se objevi dany znak prevedeho na jiny znak } 'J': x:=x+'&'; { pokud se objevi dany znak prevedeho na jiny znak } 'K': x:=x+'%'; { pokud se objevi dany znak prevedeho na jiny znak } 'L': x:=x+':'; { pokud se objevi dany znak prevedeho na jiny znak } 'M': x:=x+'Ń'; { pokud se objevi dany znak prevedeho na jiny znak } 'N': x:=x+'='; { pokud se objevi dany znak prevedeho na jiny znak } 'O': x:=x+'\'; { pokud se objevi dany znak prevedeho na jiny znak } 'P': x:=x+'^'; { pokud se objevi dany znak prevedeho na jiny znak } 'Q': x:=x+'-'; { pokud se objevi dany znak prevedeho na jiny znak } 'R': x:=x+'.'; { pokud se objevi dany znak prevedeho na jiny znak } 'S': x:=x+'>'; { pokud se objevi dany znak prevedeho na jiny znak } 'T': x:=x+'<'; { pokud se objevi dany znak prevedeho na jiny znak } 'U': x:=x+'?'; { pokud se objevi dany znak prevedeho na jiny znak } 'V': x:=x+'"'; { pokud se objevi dany znak prevedeho na jiny znak } 'W': x:=x+'ő'; { pokud se objevi dany znak prevedeho na jiny znak } 'X': x:=x+'['; { pokud se objevi dany znak prevedeho na jiny znak } 'Y': x:=x+']'; { pokud se objevi dany znak prevedeho na jiny znak } 'Z': x:=x+'_'; { pokud se objevi dany znak prevedeho na jiny znak } '.' : x:=x+ 'ô'; { pokud se objevi dany znak prevedeho na jiny znak } '?' : x:=x+ 'ň'; { pokud se objevi dany znak prevedeho na jiny znak } '!': x:=x+ '}' ; { pokud se objevi dany znak prevedeho na jiny znak } ',' : x:=x+ '{'; { pokud se objevi dany znak prevedeho na jiny znak } '-' : x:=x+ ''; { pokud se objevi dany znak prevedeho na jiny znak } '"' : x:=x+ 'ď'; { pokud se objevi dany znak prevedeho na jiny znak } ' ' : x:=x+ 'ů'; { pokud se objevi dany znak prevedeho na jiny znak } end; { ukonceni podminky } end; { ukonceni cylu } writeln ('sifra je'); { vypsani textu na obrazovku } writeln (x); { vypis vsech znaku co byli prevedeny } Rewrite (schranka); { toto je rezim zapisovani do souboru } Write(schranka,x); { zapsani udaju do souboru } close (schranka); { uzavreni souboru } writeln; { preskoceni radku } writeln ('stiknete enter pro navrat do menu'); { oznamuje vam jak se vratim do menu } readln; { prazdne cteni } end; { konec bodu cislo 1 } 2:begin clrscr; { zacatek druhe volby } writeln ('****************************************'); { vypsani textu } writeln ('*** desifrovani do abecednich znaku ***'); { vypsani textu } writeln ('****************************************'); { vypsani textu } writeln; { preskoceni radku } writeln; { preskoceni radku } writeln ('zadejte cestu kam se vam ulozi desifrovany text'); { rika kam nam aby jsme si zvolili cestu k ulozeni dokumentu } readln (sobur); { Cesta tam kam chceme aby se nam ulozil soubor } Assign (schranka2,sobur); { vytvoreni textoveho souboru } writeln ('zadejte textu k desifrovani'); { rika nam co mame delat } readln (sifra); { napiste sifru ktera se vam dekoduje zpatky na znaky kterym rozumime } sifra:= upcase (sifra); { prevede jen do velkych znaku } for i:=1 to length(sifra) do { cyklus bude tak dlouho trvat dokud nezkontroluje vsechny znaky } begin { zacatek cyklu } case sifra [i] of { podminka } '@' : x:=x+ 'A'; { pokud se objevi dany znak prevedeho na jiny znak } '$' : x:=x+ 'B'; { pokud se objevi dany znak prevedeho na jiny znak } '!' : x:=x+ 'C'; { pokud se objevi dany znak prevedeho na jiny znak } '~' : x:=x+ 'D'; { pokud se objevi dany znak prevedeho na jiny znak } 'ř' : x:=x+ 'E'; { pokud se objevi dany znak prevedeho na jiny znak } '|' : x:=x+ 'F'; { pokud se objevi dany znak prevedeho na jiny znak } ')' : x:=x+ 'G'; { pokud se objevi dany znak prevedeho na jiny znak } '(' : x:=x+ 'H'; { pokud se objevi dany znak prevedeho na jiny znak } '*' : x:=x+ 'I'; { pokud se objevi dany znak prevedeho na jiny znak } '&' : x:=x+ 'J'; { pokud se objevi dany znak prevedeho na jiny znak } '%' : x:=x+ 'K'; { pokud se objevi dany znak prevedeho na jiny znak } ':' : x:=x+ 'L'; { pokud se objevi dany znak prevedeho na jiny znak } 'Ń' : x:=x+ 'M'; { pokud se objevi dany znak prevedeho na jiny znak } 'Đ' : x:=x+ 'N'; { pokud se objevi dany znak prevedeho na jiny znak } '\' : x:=x+ 'O'; { pokud se objevi dany znak prevedeho na jiny znak } '^' : x:=x+ 'P'; { pokud se objevi dany znak prevedeho na jiny znak } '-' : x:=x+ 'Q'; { pokud se objevi dany znak prevedeho na jiny znak } '.' : x:=x+ 'R'; { pokud se objevi dany znak prevedeho na jiny znak } '>' : x:=x+ 'S'; { pokud se objevi dany znak prevedeho na jiny znak } '<' : x:=x+ 'T'; { pokud se objevi dany znak prevedeho na jiny znak } '?' : x:=x+ 'U'; { pokud se objevi dany znak prevedeho na jiny znak } '"' : x:=x+ 'V'; { pokud se objevi dany znak prevedeho na jiny znak } 'ő' : x:=x+ 'W'; { pokud se objevi dany znak prevedeho na jiny znak } '[' : x:=x+ 'X'; { pokud se objevi dany znak prevedeho na jiny znak } ']' : x:=x+ 'Y'; { pokud se objevi dany znak prevedeho na jiny znak } '_' : x:=x+ 'Z'; { pokud se objevi dany znak prevedeho na jiny znak } 'ô' : x:=x+ '.'; { pokud se objevi dany znak prevedeho na jiny znak } 'ň' : x:=x+ '?'; { pokud se objevi dany znak prevedeho na jiny znak } '}': x:=x+ '!' ; { pokud se objevi dany znak prevedeho na jiny znak } '{' : x:=x+ ','; { pokud se objevi dany znak prevedeho na jiny znak } '' : x:=x+ '-'; { pokud se objevi dany znak prevedeho na jiny znak } 'ď' : x:=x+ '"'; { pokud se objevi dany znak prevedeho na jiny znak } 'ů' : x:=x+ ' '; { pokud se objevi dany znak prevedeho na jiny znak } end; { konec podminky } end; { konec cyklu } writeln ('desifrovany text je '); { vypsani textu } writeln (x); { vypsani vsech znaku co sli desifrovat } Rewrite (schranka2); { zapisovani do souboru } Write(schranka2,x); { zapis do souboru } close (schranka2); { uzavreni souboru } readln; { prazdne cteni } writeln (' stiknete enter pro navrat do menu'); { rika nam jak se mame dostat zpatky do hlavni nabidky } readln; { prazdne cteni } end; { konec druheho bodu } 3:begin { zacatek tretiho bodu } clrscr; { vymazani obrazovky } writeln (' ***********************'); { vypsani textu } writeln (' *** zobrazeni znaku ***'); { vypsani textu } writeln (' ***********************'); { vypsani textu } writeln (' A = @ N = Đ '); { vypsani znaku a jejich zasifrovani } writeln (' B = $ O = \ '); { vypsani znaku a jejich zasifrovani } writeln (' C = ! P = ^ '); { vypsani znaku a jejich zasifrovani } writeln (' D = ~ Q = - '); { vypsani znaku a jejich zasifrovani } writeln (' E = ř R = . '); { vypsani znaku a jejich zasifrovani } writeln (' F = | S = > '); { vypsani znaku a jejich zasifrovani } writeln (' G = ) T = < '); { vypsani znaku a jejich zasifrovani } writeln (' H = ( U = ? '); { vypsani znaku a jejich zasifrovani } writeln (' I = * V = " '); { vypsani znaku a jejich zasifrovani } writeln (' J = & W = ő '); { vypsani znaku a jejich zasifrovani } writeln (' K = % X = [ '); { vypsani znaku a jejich zasifrovani } writeln (' L = : Y = ] '); { vypsani znaku a jejich zasifrovani } writeln (' M = Ń Z = _ '); { vypsani znaku a jejich zasifrovani } writeln (' . = ó ? = ÷ '); { vypsani znaku a jejich zasifrovani } writeln (' ! = } , = { '); { vypsani znaku a jejich zasifrovani } writeln (' - = " = ď '); { vypsani znaku a jejich zasifrovani } readln; { prazdne cteni } writeln ('stiknete enter pro navrat do menu '); { rika nam co mam jak se mame dostat do hlavni nabidky } readln; { prazdne cteni } end; { konec tretiho bodu } 4:begin { zacatek ctvrteho bodu } clrscr; { vymazani obrazovky } writeln (' ************************************* '); { vypsani textu } writeln (' *** zasifrovani textu z dokumentu *** '); { vypsani textu } writeln (' ************************************* '); { vypsani textu } writeln ('zadejte cestu kam se vam prelozi zasifrovany text'); { rika kam nam aby jsme si zvolili cestu k ulozeni dokumentu } readln (sobur2); { Cesta tam kam chceme aby se nam ulozil soubor } Assign (s2,sobur2); writeln (' zadejte uplnou cestu k dokumentu,ktery chcete zasifrovat '); { oznameni } readln (subor); { musime zadat uplne celou cestu ke souboru } writeln ('Tento text byl v dokumentu'); { oznameni } Assign (schranka3,subor); { otevre nam soubor } reset (schranka3); { provede vypsani celeho souboru na obrazovku } while (not (eof(schranka3)) ) do begin { zajisti nam ze se vsechno vypsalo } Readln (schranka3,subor) ; { precte nam vsechny udaje ze souboru } writeln (subor); { a timhle se vsechny znaky zobrazi } end; subor:=upcase(subor); { vsechny pismena budou velka } for i:=1 to length(subor) do { cyklu } begin { zacatek cyklu } case subor[i] of { podminka } 'A': x:=x+'@'; { pokud se objevi dany znak prevedeho na jiny znak } 'B': x:=x+'$'; { pokud se objevi dany znak prevedeho na jiny znak } 'C': x:=x+'!'; { pokud se objevi dany znak prevedeho na jiny znak } 'D': x:=x+'~'; { pokud se objevi dany znak prevedeho na jiny znak } 'E': x:=x+'ř'; { pokud se objevi dany znak prevedeho na jiny znak } 'F': x:=x+'|'; { pokud se objevi dany znak prevedeho na jiny znak } 'G': x:=x+')'; { pokud se objevi dany znak prevedeho na jiny znak } 'H': x:=x+'('; { pokud se objevi dany znak prevedeho na jiny znak } 'I': x:=x+'*'; { pokud se objevi dany znak prevedeho na jiny znak } 'J': x:=x+'&'; { pokud se objevi dany znak prevedeho na jiny znak } 'K': x:=x+'%'; { pokud se objevi dany znak prevedeho na jiny znak } 'L': x:=x+':'; { pokud se objevi dany znak prevedeho na jiny znak } 'M': x:=x+'Ń'; { pokud se objevi dany znak prevedeho na jiny znak } 'N': x:=x+'='; { pokud se objevi dany znak prevedeho na jiny znak } 'O': x:=x+'\'; { pokud se objevi dany znak prevedeho na jiny znak } 'P': x:=x+'^'; { pokud se objevi dany znak prevedeho na jiny znak } 'Q': x:=x+'-'; { pokud se objevi dany znak prevedeho na jiny znak } 'R': x:=x+'.'; { pokud se objevi dany znak prevedeho na jiny znak } 'S': x:=x+'>'; { pokud se objevi dany znak prevedeho na jiny znak } 'T': x:=x+'<'; { pokud se objevi dany znak prevedeho na jiny znak } 'U': x:=x+'?'; { pokud se objevi dany znak prevedeho na jiny znak } 'V': x:=x+'"'; { pokud se objevi dany znak prevedeho na jiny znak } 'W': x:=x+'ő'; { pokud se objevi dany znak prevedeho na jiny znak } 'X': x:=x+'['; { pokud se objevi dany znak prevedeho na jiny znak } 'Y': x:=x+']'; { pokud se objevi dany znak prevedeho na jiny znak } 'Z': x:=x+'_'; { pokud se objevi dany znak prevedeho na jiny znak } '.' : x:=x+ 'ô'; { pokud se objevi dany znak prevedeho na jiny znak } '?' : x:=x+ 'ň'; { pokud se objevi dany znak prevedeho na jiny znak } '!': x:=x+ '}' ; { pokud se objevi dany znak prevedeho na jiny znak } ',' : x:=x+ '{'; { pokud se objevi dany znak prevedeho na jiny znak } '-' : x:=x+ ''; { pokud se objevi dany znak prevedeho na jiny znak } '"' : x:=x+ 'ď'; { pokud se objevi dany znak prevedeho na jiny znak } ' ' : x:=x+ 'ů'; { pokud se objevi dany znak prevedeho na jiny znak } end; { konec podminky } end; { konec cyklu } Writeln ('zasifrovany text je '); writeln (x); { vypsani vsech znaku na obrazovku } readln; { prazdny radek } close (schranka3); { zavreni dokumentu } Rewrite (s2); { zapisovani do souboru } Write(s2,x); { zapis do souboru } close (s2); { uzavreni souboru } writeln ('stiknete enter pro navrat do menu'); { oznameni jak se dostat do hlavniho menu } readln; { prazdne cteni } end; { konec nacteni } end; { konec ctvrteho bodu } case volba of { podminka } 5:begin { zvoleni pateho bodu } clrscr; { vymazani obrazovky } writeln (' ************************************* '); { vypsani textu } writeln (' *** desifrovani textu z dokumentu *** '); { vypsani textu } writeln (' ************************************* '); { vypsani textu } writeln ('zadejte cestu kam se vam prelozi desifrovany text'); { rika kam nam aby jsme si zvolili cestu k ulozeni dokumentu } readln (sobur3); { Cesta tam kam chceme aby se nam ulozil soubor } Assign (s3,sobur3); writeln (' zadejte uplnou cestu k dokumentu,ktery chcete desifrovat '); { } readln (soubor); { zadani uplne cesty k souboru } Assign (schranka4,soubor); { Otevreni souboru } reset (schranka4); { vypsani souboru } while (not (eof(schranka4)) ) do begin { zajisti nam ze se vsechno vypsalo } Readln (schranka4,soubor) ; { precte nam vsechny udaje ze souboru } writeln (soubor); { a timhle se zajisti ze se vsechny znaky vypsaly } end; { konec podminky while } soubor:=upcase(soubor); { vsechny pismena ktera se zobrazi budou velka } for i:=1 to length(soubor) do { cyklus do te doby doku to neprevede vsechyn znaky } begin { zacatek cyklu } case soubor[i] of { podminka } '@' : x:=x+ 'A'; { pokud se objevi dany znak prevedeho na jiny znak } '$' : x:=x+ 'B'; { pokud se objevi dany znak prevedeho na jiny znak } '!' : x:=x+ 'C'; { pokud se objevi dany znak prevedeho na jiny znak } '~' : x:=x+ 'D'; { pokud se objevi dany znak prevedeho na jiny znak } 'ř' : x:=x+ 'E'; { pokud se objevi dany znak prevedeho na jiny znak } '|' : x:=x+ 'F'; { pokud se objevi dany znak prevedeho na jiny znak } ')' : x:=x+ 'G'; { pokud se objevi dany znak prevedeho na jiny znak } '(' : x:=x+ 'H'; { pokud se objevi dany znak prevedeho na jiny znak } '*' : x:=x+ 'I'; { pokud se objevi dany znak prevedeho na jiny znak } '&' : x:=x+ 'J'; { pokud se objevi dany znak prevedeho na jiny znak } '%' : x:=x+ 'K'; { pokud se objevi dany znak prevedeho na jiny znak } ':' : x:=x+ 'L'; { pokud se objevi dany znak prevedeho na jiny znak } 'Ń' : x:=x+ 'M'; { pokud se objevi dany znak prevedeho na jiny znak } 'Đ' : x:=x+ 'N'; { pokud se objevi dany znak prevedeho na jiny znak } '\' : x:=x+ 'O'; { pokud se objevi dany znak prevedeho na jiny znak } '^' : x:=x+ 'P'; { pokud se objevi dany znak prevedeho na jiny znak } '-' : x:=x+ 'Q'; { pokud se objevi dany znak prevedeho na jiny znak } '.' : x:=x+ 'R'; { pokud se objevi dany znak prevedeho na jiny znak } '>' : x:=x+ 'S'; { pokud se objevi dany znak prevedeho na jiny znak } '<' : x:=x+ 'T'; { pokud se objevi dany znak prevedeho na jiny znak } '?' : x:=x+ 'U'; { pokud se objevi dany znak prevedeho na jiny znak } '"' : x:=x+ 'V'; { pokud se objevi dany znak prevedeho na jiny znak } 'ő' : x:=x+ 'W'; { pokud se objevi dany znak prevedeho na jiny znak } '[' : x:=x+ 'X'; { pokud se objevi dany znak prevedeho na jiny znak } ']' : x:=x+ 'Y'; { pokud se objevi dany znak prevedeho na jiny znak } '_' : x:=x+ 'Z'; { pokud se objevi dany znak prevedeho na jiny znak } 'ô' : x:=x+ '.'; { pokud se objevi dany znak prevedeho na jiny znak } 'ň' : x:=x+ '?'; { pokud se objevi dany znak prevedeho na jiny znak } '}': x:=x+ '!' ; { pokud se objevi dany znak prevedeho na jiny znak } '{' : x:=x+ ','; { pokud se objevi dany znak prevedeho na jiny znak } '' : x:=x+ '-'; { pokud se objevi dany znak prevedeho na jiny znak } 'ď' : x:=x+ '"'; { pokud se objevi dany znak prevedeho na jiny znak } 'ů' : x:=x+ ' '; { pokud se objevi dany znak prevedeho na jiny znak } end; { konec podminky } end; { konec cyklu } writeln ('tohle bylo v zasifrovanem dokumentu'); { vypsani textu na obrazovku } writeln (x); { desifrovany text } readln ; { prazdne cteni } close (schranka4); { uzavreni dokumentu } Rewrite (s3); { zapisovani do souboru } Write(s3,x); { zapis do souboru } close (s3); { uzavreni souboru } writeln ('stiknete enter pro navrat do menu '); { stiknutim enteru se dostaneme do hlavni nabidky } readln; { prazdne cteni } end; { povinny end } end; { konec pateho bodu } case volba of { case } 6:begin { zacatek sesteho bodu } clrscr; { vymazani obrazovky } Writeln ('program pripravil Tomas badin' ); { vypsani na obrazovku } end ; { end } end; { end musi byt } until (volba=6) { konec cyklu reapeat a until program se ukonci jen kdyz je zvoleno cislo 6 } end. { konec programu }