Hlavní stránka
Download
Dokumentace
Informace

O programu

V této sekci bych chtěl uvádět některé vlastnosti a rysy programu. Zdůrazňuji, že se nejedná o nějak vyčerpávající výklad o použitých algoritmech, ale jen o základních principech, na kterých je tento program postaven.

Program

Tento šifrovací systém byl naprogramován v jazyce C. Všechny možné dostupné zdrojové kódy jsou volně dostupné (podle General Public Licence). Část grafického rozhraní byla též psaná v jazyce C++.

Prvotní platforma, pro kterou byl tento program napsán, je systém Windows 95 a vyšší. Nevylučuji však v budoucnu ani další možné systémy. Tento program byl pro platformu Win32 napsán, kvůli tomu, že je v současné době asi nejdostupnější pro řadové uživatele, i když program nese některé rysy Linuxového systému.

Teoreticky lze říci, že program by měl fungovat všude tam, kde je dostupné GNU C. Program byl psán s tím, že bude kompilován a běžet na 32 bitovém počítači a operačním systému. 16bit platformy nejsou podporovány, stejně tak není ani podporován starý souborový systém bez dlouhých názvů souborů.

Použité kompilátory: MinGW, Borland Builder 6. Pro úspěšnou kompilaci však zřejmě budou potřeba i další programy (např. z DJGPP).

Použité knihovny: zlib, pnglib, lzo, allegro.

Česká slovní zásoba byla použita z programu i-spell.

Cíl programu

Cílem tohoto programu je poskytnout co největší paletu různých šifer, které mohou být v současné době k sehnání. Při navrhování funkčnosti byl kladen důraz na modularitu a jednoduchost.

Cílem programu není poskytnout uživateli nějakou dokonale neprůstřelnou šifru na ochranu svých dokumentů. Myslím, že k tomuto účelu jsou tu jistě lepší a dokonalejší systémy šifrování.

Jednotlivé funkce programu nebyly navrženy tak, aby umožňovali oboustranný převod textu do šifrované podoby a zpět. Tento program slouží pouze k šifrování.

U ostatních programů mi vždycky chybělo, že jednotlivé šifry nešli přímo kombinovat a pokud jsme chtěli nějakou trochu složitější šifru, museli jsme programy různě přemlouvat. Tento program byl postaven tak, že šifry mohou být libovolně kombinovány. Takovýto typ je trochu složitější na dešifrování, ale pokud se věnujeme šifrování se staršími lidmi, pak této vlastnosti můžeme plně využit.

Tento program však bohužel zatím nedokáže šifry kombinovat přímo. Zatím je možné je ale celkem jednoduše šifrovat postupně. Bez nutnosti použití schránky na přenos textu.

Důvod vzniku

Když jsem (v létě roku 2002) hledal nějaký program, který by mi umožňoval rychle šifrovat text do jednoduchých druhů šifer, našel jsem pouze jediný. Již dlouho jsem si také zahrával s myšlenkou vytvořit program, který dokázal zobrazovat i jiné než šifry, než u kterých se používají jen písmena a číslice. Zkrátka vytvořit program, který dokáže zobrazit i jiné normálně nepoužívané znaky (př. je Velký polský kříž).

Právě proto vznikl tento projekt, který se snaží kombinovat jednoduché písmenné šifry i složitější grafické šifry, tedy aby vznikl kvalitní program pro přípravu šifer pro ty nejmlaší, ale i starší členy různých oddílů.

Vývoj tohoto programu stále probíhá. Nevylučuji však, že by mohl být někdy nenadále ukončen, právě proto jsem se rozhodl s programem uvolnit i zdrojové kódy, aby se tento program nikdy nemohl stát mrtvým a aby se mohl i nadále (třeba i bez vědomí autora) po ukončení vývoje dále mohl rozvíjet. Proto aby vše zůstalo i nadále volně dostupné, je tento program rozšiřován podle GNU General Public Licence (GPL).

Systém filtrů

Program je vystavěn na systému filtrů, kde existuje jakýsi datový typ, do kterého uchovávají data. Tato data pak jedna funkce zpracuje a výsledný text pak uloží nazpátek. Výsledek pak může znovu použít další filtr a zpracovat. Výsledek se pak vypíše.

Podobný systém existuje i v systému Linux, kde lze výstup programu přesměrovat na vstup jiného programu. V Linuxu je tento systém ale lepší, protože program může zpracovávat přijímaná data ihned a nemusí čekat na ukončení programu zdrojového.

Systém filtrů byl zvolen proto, protože poskytuje dostatečně velkou flexibilitu, kdy rozšiřování programu probíhá pouze tím, že se naprogramuje daný filtr a přidá se do globálního programového obsahu filtrů. Díky tomuto systému odpadá nutnost, aby bylo nutné implementovat nějakou funkci do programu vícekrát, například není potřeba implementovat funkci na úpravu textu, tak aby po každém slově následovala pouze jedna mezera, vícekrát. Tato funkce se jednoduše napíše jednou a ostatní filtry prostě předpokládají, že pracují již s takto předzpracovaným textem.

Příkladem může být i Morseova abeceda. Existuje filtr, který převádí text do Morseovy abecedy. Další filtr, již předpokládají, že pracují s textem v Morseově abecedě. Bylo by totiž zbytečné implementovat tento převod několikrát.

U všech filrů jsem se snažil, aby zpracovávali jenom to, co dokáží zpracovat a aby neznámé hodnoty pak vraceli nazpátek do zašifrovaného textu.

Pokud však dokážete spojovat vstupy a výstupy programů, můžete si užít plného spojování různých šifer dohromady již dnes. Stačí se vyzbrojit trpělivostí a nastudovat si parametry filtrů. Všechny filtry jsou uloženy v adresáři /bin jako oddělené spustitelné programy.

Když jsem začínal psát tento program a rozhodoval se jaký systém použít, zda naprogramovat jeden opravdu velký program nebo zda naprogramovat je několik malých a samostatných programů. Nakonec jsem zvolil kompromis: Existuje větší množství malý podprogramů, které ovládají své okolí pomocí standardních mechanismů. Takto provádí vstup a výstup. každý filtr se tak chová jako malý program.

Použité programy při vývoji

Při vývoji tohoto programu bylo použito mnoho dalších programů a aplikací. Chtěl bych zde uvést alespoň ty, které byly používány nejvíce

Corel Draw 8 - veškerá grafika byla kreslena jako vektorová

Corel Photo-Paint 8 - v tomto programu byly uloženy obrázky z programu Corel Draw

C++Builder 6 - vývoj grafického prostředí

MinGW - nejedná se ani tak o program ale o soubor kompilovacích programů pro Windows, jedná se o GNU C, které pochází z projektu GNU (GNU's Not Unix)

DJGPP - ranné verze programu byly v tomto prostředí napsány, jedná se o něco podobného jako MinGW, ale pro operační systém DOS, pro konfiguraci je stále potřebován

Far Manager - v tomto programu jsem se staral o adresářovou strukturu programu, prováděl jednodušší editace a konfiguroval

NitroSetup - utilita pro vytvoření instalačního programu

TextPad - textový editor, ve kterém byl tento program napsán (zdrojové programy i dokumentace)

WinAce - v tomto programu byly zabaleny instalační soubory

html2hlp - pro vytvoření nápovědy pro programy pod Windows

bmp2png - pro převedení souborů BMP do formátu PNG

Programátorovy poznámky

Zde bych chtěl postupně napsat několik postřehů, rad, zamýšlených funkcích a vše okolo tohoto programu.

Vypadáto, že verze pro jiné operační systémy bude zřejmě chvíli trvat. Kvůli několika důvodům: Taková verze nemá moc velkou šanci se uchytit, protože zde je jen málo uživatelů tohoto operačního systému, dále pak grafické prostředí bylo psáno pod Borlandem, který (zatím) není portovatelný.

Dále se asi odsunul projekt čistě textového prostředí, které by mohlo fungovat opravdu všude. Naštěstí šifrovací část grafického prostředí byla napsána pro toto textové prostředí a teprve potom přenesena do grafického. Doufám, že je vše stále stejně dobře portovatelné.

Od verze 0.3 beta jsem převedl všechny soubory z nekomprimovaného formátu BMP na formát PNG. Tímto se instalovaná data zmenšila asi o 1/3. Program se také trochu urychlil, protože již není potřeba číst tolik dat z disku.

Od stejné verze zřejmě bude ještě k dispozici verze (mini) nebo Lite, která obsahuje jen vše co je potřeba úspěšnému běhu programu. Nejsou instalovány žádné zdrojové kódy. Tyto zdrojové kódy lze však získat z plné verze, která také obsahuje lepší (hezčí) dokumentaci ve formátu HTML. A všechny soubory nutné k rekompilaci programu. Při navrhování zmenšené verze jsem se snažil vytvořit distribuci, která sice nebude kompletní, ale bude na jednu disketu a bude mít naprostou většinu funkcí.

Na instalačních disketách se vyskytuje zkomprimovaný instalační soubor. Použitá komprese je ACE, která poskytuje celkem solidní kompresní výkon.

Prostředí programu

Chtěl bych upozornit na skutečnost

Použité formáty nastavení

Při vytváření programu vzniklo několik požadavků na formátu nastavení některých částí programu. Na tomto místě se je budu snažit alespoň trochu popsat. Protože tento program se stále vyvíjí, není v mých silách zde popsat všechny zkutečnosti, všechny závislosti. Pokud si nejste s něčím jisti, věřte zdrojovým kódům.

Chtěl bych také upozornit na skutečnost, že zde uvedená dokumentace nemusí být úplná ani úplně odpovídající realitě. Upozorňuji také, že tato dokumentace může v budoucích vydáních tohoto programu zastarat.

2)Nastavení hierarchie šifer pro grafické prostředí

K nastavení funkčnosti a hierarchie šifer v grafickém prostředí slouží soubor se jméhem "script.sc", který se nachází v adresáři /data/script .

Pozn. Tento soubor vždy vznikne jako výstup přefiltrováním speciálního definičního souboru standartním preprocesorem jazyka C. Tato skutečnost však neznamená, že je syntaxe tohoto souboru podobná syntaxi jazyka C.

Každý řáděk, který začíná znakem # je ignorován. Na začátku každého souboru je jakési rozvětvené menu. Obsahem každé větve nabídky může být šifra nebo další nabídka.

Na každém řádku je jméno funkce (šifry nebo nabídky) a její interní název, oddělený čárkou. Přitom platí, že název funkce a interní název je na stejném řádku. Jednotlivé řádky se žádným způsobem neoddělují. Pokud se nejedná o název funkce, ale o podnabídku, označíme její interní název jako "_menu_".

Hlavní nabídka je (stejně jako ostatní uzavřena do složených závorek.

Dále je v souboru uvedena definice funkcí. Jméno funkce je vždy uzavřeno do hranatých závorek a po této definici následuje její popis.

1)Nastavení fontů pro bitmap_writer

Pokud se rozhodnete přidat své vlastní grafické šifry, zřejmě budete se budete muset pokusit napsat definiční soubor pro tento filtr. Pokud vás tato možnost i nadále zajímá, pak čtěte dále.

Tento filtr používá vložený text k tomu aby vytiskl jednotlivé znaky do bitmapového souboru. Tyto soubory jsou většinou uloženy v adresáři /data/bmp/. Pro indikaci, že se jedná o takový soubor jsem zvolil příponu souborů SFF.

Pokud máte nějaké pochybnosti podívejte se, jak jsou vyřešeny definiční soubory v tomto programu. Všechny soubory v tomto programu můžete použít jako výchozí vzory pro vlastní.

Cokoliv uvedeného za znakem # je bráno jako komentář a je ignorováno. Příklad:

# tento řádek se ignoruje

příkaz  # provede se prikaz

Všechna nastavení jsou v závorkách < >. Konec daného příkazu se značí znovuuvedením stejného příkazu se znakem lomítka na začátku. Některé příkazy nemají párový příkaz.

<type document="sifra" name="Braillovo pismo pro nevidome">

Informace souboru jsou uloženy v příkazu <type>. Zatim vsak jsou tyto informace nevyuzity.

<type dokument=... name=...>

  dokument=sifra         udava, ze se jedna o tento typ 
  name=                  pojmenovani dokumentu

pr.

<type document="sifra" name="Velky kriz">

Hlavní součást těchto souborů tvoří vše co se nachází mezi <data> </data>.

<data>
 ...
</data>

Text, který je vložen do těchto příkazů se pak zpracováná po řádcích a definuje grafickou podobu znaků a další vlastnosti každého znaku. Jako znak můžeme použít i více hlásek. Jejich grafická podoba však tvoří pouze jediný obrázek.

Tvar každé řádky je následující: Řádka začíná na písmeno nebo na skupinu písmen, následuje znak rovná se "=" a po něm jsou zapsány vlastnosti. Jednotlivé vlastnosti se oddělují čárkami a hodnoty paremetru jsou uzavřeny do závorek následujících hned po jménu vlastnosti:

a=bitmap(znak_A.bmp),align(down)

Pokud chceme vyjádřit nějaké speciální znaky, které by mohly činit problémy, pak použijeme tyto speciální sekvence:

\u  -  znak uvozovek
\k  -  znak křížku #
"=" -  znak rovná se =
\l  -  znak menši <
\r  -  znak větši >
\\  -  znak zpětné lomitko \

Dále následuje popis jednotlivých vlastností, které můžeme použít pro definování vlastností.

bitmap(jmeno_souboru) - obrázek, který se použije pro definované písmeno, podporovány jsou obrázky ve formátu BMP, PCX, TIFF, PNG
bitmap(znak_A.bmp)
align(cislo) - nastavuje spodní hranici obrázku, tedy která vertikální poloha je brána jako poloha kam má být umístěn obrázek. Zvláštní hodnoty:
align(down)
width(cislo) - nastavuje šířku obrázku (v bodech), pokud chceme použít jinou než má obrázek
width(100)
height(cislo) - nastavuje výšku obrázku (v bodech), pokud chceme použít jinou než má obrázek
height(100)
macro(znak) -

alias(znak) - tyto dve vlastnosti jsou totozne a rikaji, ze dane pismeno prevezme vsechny vlastnosti po jinem jiz definovanem znaku. Vlastní postavení má znak __default__ , který se automaticky aplikuje na všechny definované znaky
alias(b)
size(cislo) - zmenšuje/zvětšuje obrázek, zadané číslo vyjadřuje počet procent výsledné velikosti
size(80)
rsize(cislo) - zmenšuje/zvětšuje obrázek, zadané číslo vyjadřuje počet procent výsledné velikosti
rsize(90)
wrap(vyraz) - nastavuje, zda se může za tímto znakem zalomit řádek, tato vlastnost zde slouží proto, aby se nezalamoval řádek uprostřed slova
wrap(1)
spacing(cislo) - nastavuje kolik bodů se vynechá po tomto znaku
spacing(2)

Existuje několik znaků se speciálním výnamem:

Seznam témat , Hlavní stránka dokumentace

Obsah

Hlavní stránka
Seznam témat

Pozpátku
Pozpátku (Ch)
Slova pozpátku
Odpředu a odzadu
Ploložení textu
Falešná písmena
Vkládání textu
Převod na čísla
Zlomky
Mobilová šifra
Tabulka
Šachová šifra
Číselný klíč
Slovní klíč
Pavouk
Jednoduché kříže
Posun písmen
Posun písmen (postupně)
Posun písmen (heslo)
Autoklíč
Částečná záměna
Pomocné slovo
Obrácená abeceda
Pouze velká
Každé n-té písmeno
Některá velká

Morseova abeceda
Převrácené znaky
Obrácené znaky
Změna znaků
Převod na čísla

Tabulka
Šifrovací mřížka

Rozházená písmena
Grafický výstup
Braillovo písmo
Velký polský kříž
Malý kříž
Jiný kříž
Hebrejština
Semafor
Prstová abeceda (1)
Prstová abeceda (2)
Fonty
Symboly
Zlomky

Odstranění diakritiky
Filtrování písmen
Malá písmena
Velká písmena
Zjednodušení
Odstranění mezer
Oříznutí mezer
Dos to Unix
Unix to Dos
Přidání znaku nula

Bitový výstup
Hex výstup
Komprese LZO

Statistika normální
Monoalfabetická
Polyalfabetická

Statistika (četnost)
Stat. 1 rozšířená
Stat. 1 zjednodušená
Stat. 2 rozšířená
Stat. 2 zjednodušená
Stat. 3 rozšířená
Stat. 3 rozšířená (mez)
Stat. 3 zjednodušená
Stat. 3 zjednodušená (mez)

Inkousty
Z historie šifrování
Hláskovací abeceda
Písmeno CH
Spouštění programu
Typy filtrů

FAQ
O programu
Přispěli
Historie

SourceForge.net Logo


Program Šifrování
(c) 2002, 2003 Vojtěch Beil
Stránka na http://sifry.sourceforge.net
released under GNU General Public License