C a C++ týden ITnetwork Flashka zdarma
Akce! Pouze tento týden sleva až 80 % na kurzy C++. Lze kombinovat s akcí 50 % bodů navíc na prémiový obsah!
Brno? Vypsali jsme pro vás nové termíny školení Základů programování a OOP v Brně!

Zabezpečení dat šifrováním a skrytím textu do obrázku

Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem.
Vydávání, hosting a aktualizace umožňují jeho sponzoři.

Nápad zabývat se touto problematikou vznikl při čtení knihy Michaela Palmera „Poslední chirurg“. Nájemný vrah spolupracující z CIA komunikuje se svými objednateli vražd prostřednictvím eBay. Obrázek nabízeného předmětu totiž obsahuje skrytý text.

Před časem byl na zive.cz uveřejněn článek týkající se šifrování e-mailů a zabezpečení soukromí na internetu http://www.zive.cz/…default.aspx. V článku, který doporučuji si přečíst, je vysvětleno, proč emaily šifrovat, a jsou doporučeny i nástroje, které to umožňují. Lze jistě nalézt celou řadu dalších odkazů na problematiku zabezpečení dat komunikace a ukládání dat.

Z celé šíře problematiky jsem vybral steganografii. Můj poslední článek z této problematiky prezentoval ukládání textu do obrázku metodou LSB (least signifiant bit), modifikací nejméně významného bitu pixelu obrázku http://www.itnetwork.cz/…e-steganolsb. V textu jsem zmínil možnost text ještě před uložením do obrázku šifrovat, např. pomocí mého programu AES krypto Editor. Rozhodl jsem se tedy oba produkty spojit do jednoho, a vznikl tak program CryptoStegano . Pomocí tohoto programu je tak možné text zašifrovat metodou AES Rijnadae, nebo text ponechat beze změny a uložit do obrázku. Celou operaci je možné chránit přístupovým kódem 6-ti až 12-ti ASCII znaků. Obrázek s ukrytým textem slouží k zabezpečení citlivých informací ve vlastním počítači, je možné jej vystavit na Internetu, odeslat e-mailem nebo odeslat do datového úložiště. Pro zpětné získání textu z obrázku program vyžaduje znalost přístupového kódu. Přístupovým kódem se nastavuje místo uložení textu v obrázku a v případě, že je text zašifrován nastavuje se pomocí tohoto kódu také umístění inicializačního vektoru a klíče v obrázku. Program rovněž umožňuje zašifrovat text a chránit jej přístupovým kódem bez uložení do obrázku. Text může být ve formátu txt, rtf, htm a html. Program umožňuje chránit obrázky vodoznakem. Vodoznak může být textový nebo obrázek. Lze nastavit velikost, font a průhlednost textu vodoznaku, rovněž u obrázkového vodoznaku lze nastavit průhlednost. V programu jsem si v Propertis ověřil funkci Settings, jejichž pomocí jsem nastavil 14-ti denní testování a vyžádání aktivačního kódu (naleznete jej ve zdrojovém kódu). Tajným tlačítkem lze obnovit 14-ti denní testování. Rozsah kódu je již poměrně značný a jistě lze nalézt řadu chyb, které jsem při testování neobjevil. Neváhejte mně tedy na chyby upozornit.

Protože v posledním článku je uveden algoritmus zápisu textu do obrázku metodou LSB, nebudu jej již opakovat. Rovněž metoda šifrování AES Rijnadae je obecně známá včetně využití knihovny System.Securi­ty.Cryptograp­hy.

V příloze je obrázek s ukrytým texem s přístupovým kódem 000000.


Galerie

Program byl vytvořen v roce 2015.

 

Stáhnout

Staženo 192x (8.13 MB)
Aplikace je včetně zdrojových kódů v jazyce C#

 

 

Program pro vás napsal itnavi
Avatar
Jak se ti líbí článek?
8 hlasů
Autor se věnuje tvorbě a správě webových stránek a programování v C#
Všechny články v sekci
Zdrojákoviště C# .NET - Práce se soubory
Aktivity (2)

 

 

Komentáře

Avatar
mkub
Redaktor
Avatar
mkub:22.5.2015 3:46

neuvazoval si, ze vytvoris tento nastroj ako multiplatformovy?

 
Odpovědět  +1 22.5.2015 3:46
Avatar
itnavi
Redaktor
Avatar
Odpovídá na mkub
itnavi:22.5.2015 9:44

To by bylo samozřejmě dobré, ale já na to nemám, zkušenosti ani prostředky. Mým záměrem je najít partnera a dopracovat program tak, jak je uvedeno v tajné zprávě.
Zdravím
Ivan

Odpovědět 22.5.2015 9:44
Pořád něco nového
Avatar
mkub
Redaktor
Avatar
Odpovídá na itnavi
mkub:22.5.2015 19:27

vykasli na C#, skus ho prerobit do C++, alebo javy

 
Odpovědět  -5 22.5.2015 19:27
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na mkub
Jan Vargovský:22.5.2015 19:36

Co ti vadí na C#?

 
Odpovědět  +6 22.5.2015 19:36
Avatar
Odpovídá na mkub
Štefan Pružinský:22.5.2015 19:44

Prečo, veď môže využiť Xamarin a bude to multiplatformové...

Odpovědět 22.5.2015 19:44
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
mkub
Redaktor
Avatar
Odpovídá na Jan Vargovský
mkub:22.5.2015 20:14

distribucie nemaju v standardnej konfiguracii nainstalovane ani mono, ako ani wine a pokial sa to prerobi do C++ s vyuzitim prvkov pre multiplatformovost, tak by sa to mohlo pouzivat aj vo Windowse, na macoch, Unixoch, Linuxoch...

a okrem toho mono neobsahuje vsetky kniznice, ktore vyuziva jazyk C#, tym jazyk C# pokrivkava v multiplatformovosti a mono je stale o niekolko verzii pozadu za vyvojom jazyka C#, aj to dava multiplatformovosti nafrak

 
Odpovědět 22.5.2015 20:14
Avatar
mkub
Redaktor
Avatar
Odpovídá na Štefan Pružinský
mkub:22.5.2015 20:22

pre ake platformy to bude potom? a okrem toho nie kazdy ma ho nainstalovany... a takisto ani Xamarin nie je 100%-ne kompatibilny s platformou .NET

 
Odpovědět 22.5.2015 20:22
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na mkub
Jan Vargovský:22.5.2015 20:28

Žiješ v minulosti...

 
Odpovědět  -1 22.5.2015 20:28
Avatar
Odpovídá na mkub
Štefan Pružinský:22.5.2015 20:40

Create native iOS, Android, Mac and Windows apps in C#. Je to pre tieto platformy. Koncový používateľ k tomu nepotrebuje nič.

Odpovědět  -1 22.5.2015 20:40
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
mkub
Redaktor
Avatar
Odpovídá na Štefan Pružinský
mkub:23.5.2015 3:24

len tieto 4 platformy? to je uboha multiplatformo­vost...
to nepocitam za 100%-nu multiplatformu
skor jeto pokus omultiplatfor­movost... skutocne multiplatformove programovanie je bud Java, alebo C++, nie C#

Editováno 23.5.2015 3:26
 
Odpovědět 23.5.2015 3:24
Avatar
mkub
Redaktor
Avatar
Odpovídá na Štefan Pružinský
mkub:23.5.2015 3:33

vlastne iOS a MAC by som pokladal za iba jednu platformu, cize podporuje iba 3 platformy, takze je to uboha podpora, ako som pisal...

 
Odpovědět 23.5.2015 3:33
Avatar
itnavi
Redaktor
Avatar
Odpovídá na mkub
itnavi:23.5.2015 10:16

Nevidím důvod.C# mi poskytuje vše co ke své zábavě potřebuji. Jestli to chce někdo předělat tak mu nebráním. Výchozí algoritmy jsou v mém předchozím článku.
Zdravím
Ivan

Odpovědět  +4 23.5.2015 10:16
Pořád něco nového
Avatar
Odpovídá na mkub
Štefan Pružinský:23.5.2015 10:27

Zabudol som ešte na Linux. Myslíš, že sa C++ na iných platformách skompiluje sám? Nie, niekto musí ten kompilátor vytvoriť.

Odpovědět  -1 23.5.2015 10:27
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
mkub
Redaktor
Avatar
Odpovídá na Štefan Pružinský
mkub:23.5.2015 15:32

myslis, ze v Linuxe nie je standardne kompilator jazyka C/C++? tak to sa velmi mylis!
Linux je takmer cely napisany v jazyku C/C++ a pouziva sa kompilator GCC, co jezdielne FSF...

a takisto existuje kompilator jazyka C/C++ aj pre systemy ako je OSX, BSD, AT&T, iOS, Solaris (aine Unix like OS), dalej ajpre MS-Windows (vsetky verzie), MS-DOS, (vsetko prearchitekturu x86/AMD64), takisto kompilator jazyka C/C++ najdes aj pre ARM, a ine procesory (vlastne pre takmer vsetky)
cize ak chces urobit skutocnu multiplatformovu aplikaciu, staci ti jedine sa naucit C/C++ a sa vykaslat na C#, ktory sa iba hra na multiplatformovy jazyk

 
Odpovědět 23.5.2015 15:32
Avatar
mkub
Redaktor
Avatar
Odpovídá na itnavi
mkub:23.5.2015 15:36

s tymto postupom plne suhlasim...
dat k dispozicii vsetko potrebne, aby niekto to mohol zdokonalit a prerobit, aby sa to dalo pouzivat na hocijakom zeleze...
a to je jeden zo zakladnych principov opensource vyvoja a aj jedna z jeho kladnych vlastnosti

 
Odpovědět  +1 23.5.2015 15:36
Avatar
Odpovídá na mkub
Štefan Pružinský:23.5.2015 15:52

Ale ja netvrdím, že to tak nie je. Ja len hovorím, že ten kompilátor musel niekto vytvoriť. Myslíš, že nemôže nastať doba, keď bude virtuálny stroj C#-u dostupný pre všetky tebou spomínané platformy? Všetko sa tvorí časom, ani C++ nevyšiel z laboratórií multiplatformový.

Odpovědět 23.5.2015 15:52
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
mkub
Redaktor
Avatar
Odpovídá na Štefan Pružinský
mkub:23.5.2015 16:57

to je este hudba buducnosti, ale na beh C# aplikacii potrebujes VM a myslis, ze VM pre C# je v kazdej distribucii a v kazdom systeme predinstalovany? tak to silne pochybujem...
a takisto silne pochybujem, ze by pre par aplikacii instaloval neviem kolko 100MB balik...

 
Odpovědět 23.5.2015 16:57
Avatar
Odpovídá na mkub
Štefan Pružinský:23.5.2015 17:09

Ja netvrdím, že je. Tvrdím, že presne tak ako u C++ bude...

Edit: Xamarin aplikácie bežia bez potreby inštalácie VM. Proste nainštaluješ (napríklad) *.apk súbor a aplikácia beží...

Editováno 23.5.2015 17:12
Odpovědět 23.5.2015 17:09
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
mkub
Redaktor
Avatar
Odpovídá na itnavi
mkub:23.5.2015 17:09

len nezabudni na to, aby si to uvolnil pod OS licenciou, ako je napr. GNU GPL, resp. inu

 
Odpovědět 23.5.2015 17:09
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na mkub
Jan Vargovský:23.5.2015 17:28

Budu se opakovat, ale žiješ v minulosti. Vůbec netušíš jak to s C# momentálně je a pořád dokola tu opakuješ něco co je x měsíců staré.

 
Odpovědět 23.5.2015 17:28
Avatar
mkub
Redaktor
Avatar
Odpovídá na Jan Vargovský
mkub:23.5.2015 17:33

kolko platforiem plnohodnotne zastresuje jazyk C#? a kolko jazyk C/C++?

 
Odpovědět 23.5.2015 17:33
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na mkub
Jan Vargovský:23.5.2015 17:48

Řekl jsem si, že nemá cenu ani odpovídat. Očividně jsi dost lenivý na to, aby ses kouknul jakým směrem jde poslední dobou C#.

MS před nějakou dobou uvolnil většinu (možná vše, moc jsem to nezkoumal) projektů na github. Co to asi znamená ti vysvětlovat nemusím. K tomu všemu taky uvolnil .NET Core, což jak už z názvu můžeš poznat, je nějaké nutné minimum aby si v C# mohl takhle vůbec něco psát. Nepotřebuješ k tomu nic, všechno nutné si k sobě přitáhne aplikace (není to tak velké jako aktuální .NET na winech, že by měl xx MB). K tomu všemu se .NET rozdělil více na moduly, že už nebudou vycházet co několik měsíců nové verze celého frameworku, ale můžou vycházet patche pro jednotlivé moduly kdykoliv a ty si je pak můžeš aktualizovat/stáh­nout skrz NuGet (funguje to na stejném principu jako balíčkovací systém z winu) - tohle už funguje v .NETu dlouhou dobu, ale teď tam najdeš všechny knihovny (ofc zatím ještě ne, pořád se to updatuje).

Mohl bych tu psát ještě dlouhou dobu, ale snad tě to nakopne k tomu, aby sis o tom zjistil něco sám.

Až si o tom něco přečteš, odpověz mi prosím, jestli pořád preferuješ vývoj v Javě nebo C++. Díky.

 
Odpovědět  +2 23.5.2015 17:48
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 22 zpráv z 22.