September discount week
Tento týden až 80% sleva na e-learning týkající se jazyka C
50 % bodů zdarma na online výuku díky naší Slevové akci!
Avatar
Pavel Pražák:31.3.2017 11:13

Ahoj, rozhodl jsem se udělat šifrování správ.
dostal jsem se do bodu kdy se mi šifrování líbí ale je to pouze ve Formu kde tedy jsou 2 pole a jedno je originálni text a po stisknutí tlačítka se tento text zašifruje a naopak.

ovšem toto bych chtěl rozšířit dále a chtěl bych se zeptat jak moc složité je a zda existuje návod na šifrování dokumentů složek, a zda tato šifrace lze nahrát na komunikaci například mezi PC v jedné síti.

Díky moc za každou odpověd

 
Odpovědět
31.3.2017 11:13
Avatar
Petr Čech
Redaktor
Avatar
Odpovídá na Pavel Pražák
Petr Čech:31.3.2017 14:06

Jasně, že to jde. Jen to vyžaduje mírně pokročilejší znalosti, konkrétně bys měl umět pracovat se streamy, aby tvůj program nepadl, až narazí na velké soubory.
Zajímalo by mě, jak přesne to šifruješ a jak to má fungovat (čeho chceš dosáhnout).
Předpokládám, že používáš asymetrickou šifru asi RSA pro klíč a AES pro obsah?
Každopádně měj na paměti, že pokud to chceš dělat správně, není to jen o šifrování. Také budeš potřebovat takové lahůdky jako třeba HMAC a porovnání polí za konstantní čas...

Editováno 31.3.2017 14:07
Nahoru Odpovědět
31.3.2017 14:06
the cake is a lie
Avatar
Petr Čech
Redaktor
Avatar
Petr Čech:31.3.2017 14:10

Pokud tě zajímá šifrování pomocí jednoho sdíleného hesla, napsal jsem knihovnu pro AES. Je open-source, tak se můžeš inspirovat, je to celkem neprůstřelná šifra.

Nahoru Odpovědět
31.3.2017 14:10
the cake is a lie
Avatar
Pavel Pražák:3.4.2017 13:01

Děkuji moc za informace. Je to jen nápad a chtěl bych dosáhnout svojí vlastní šifrace v celku bez použití stávajících klíčů (ani nevím zda to jde :) ). Pro příklad co se týká stringu jako věty to zatím funguje v podstatě pomocí ASCII tabulky kdy se převede písmenu no bináru přičtou se hodnoty a vyplyvne to znak. Tedy př A = 65 = 1000001, Dále proběhne interní privátní operace, která která pro příklad písmene A, přičte a odečte určité parematry a vyhodnotí to třeba jako 100101= 37 = % v ASCII.

teďkon prosím o opravu kdybych se ptal na nesmysl. Pokud se dají převádět písmena pomocí ASCII tak musí jít přenést i soubor do Bináru pokud ano pak už bych chtěl jen v 1 PC na stejné síti nastavit komunikaci s touto šifrací odeslat do 2 PC kde bude dešifrována a objeví se třeba obrázek ve složce SHARE.

Kdybych mluvil úplný nesmysl tak prosím jen o nakopnutí na správnou cestu jak jsem říkal prostě jen nápad (ve sprše :D )

Díky moc

 
Nahoru Odpovědět
3.4.2017 13:01
Avatar
Petr Čech
Redaktor
Avatar
Odpovídá na Pavel Pražák
Petr Čech:3.4.2017 19:48

To není úplně šifrování a určitě to není bezpečný přenos. Sice tím případnému útočníkovi hodíš klacek pod nohy, ale není nemožné přijít na to, jak to rozšifrovat.
Každopádně zpět k tvému dotazu. Jde to, nemůžeš používat jen písmena, poněvadž ne všechny soubory jsou čistě ASCII text. Místo toho přečteš ten soubor jako bytové pole pomocí File.ReadAllBytes("path") a potom na každém z těch bytů provedeš stejnou operaci, jako provádíš s těmi písmeny, uložíš je ve stejném pořadí a tadá, máš "zašifrované" pole bytů, které můžeš opět normálně uložit jako soubor pomocí File.WriteAllBytes(bytovépole). No a potom to dostaneš na jiný PC a "rozšifruješ".
Pár věcí, na které bys neměl zapomenout:

  • Pokud bude soubor příliš velký, zahltí to paměť a Windows buď umře, nebo tvou appku zabije. Řešení je použití CryptoStream, ale to je docela overkill, normálně si prostě dávej pozor na příliš velké soubory :)
  • Pozor ať se tvé "šifrovací" operace vejdou do 1 bytu- nemůžeš třeba přičítat 1 k 255. Musí to být na bytech, protože kdybys operoval s intem, bylo by načítání a ukládání peklo, aby se to seskládalo do původního pořadí.
  • Byte je skoro jako int, jen je menší a nikdy není záporný, tak se ho neboj
  • Určitě to není bezpečné, pokud nepoužíváš šifrovací klíč, takže na cokoliv jiného než nějaký pokus použij hotový a bezpečný algoritmus (AES by seděl k tvému použití asi nejvíce)
  • Používej tlačítko odpovědět, není tu jen na okrasu
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět
3.4.2017 19:48
the cake is a lie
Avatar
Odpovídá na Petr Čech
Pavel Pražák:4.4.2017 9:42

Děkuji moc, doufám že tuto aplikaci roztáhnu na tolik že už to nebude jen klacek, ale pořádná kláda :D.
Jinak rozhodně to neplánuji nasazovat ve firmě nebo v častěji napadaných prostorech je to jen kvůli selflearningu a tomu abych programoval a učil se nové věci.

ještě bych se zeptal jestli existuje dokumentace jak nastavit tuto aplikaci aby tedy komunikovala mezi 2. PC.

Jinak ještě jednou děkuji moc

 
Nahoru Odpovědět
4.4.2017 9:42
Avatar
Odpovídá na Petr Čech
Michal Štěpánek:4.4.2017 10:52

Tohle mi nedělej... Napil jsem se kafe a při čtení slovního obratu

Windows buď umře, nebo tvou appku zabije

jsem si smíchy poprskal monitor... :-D

Editováno 4.4.2017 10:53
Nahoru Odpovědět
4.4.2017 10:52
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Petr Čech
Redaktor
Avatar
Odpovídá na Pavel Pražák
Petr Čech:4.4.2017 17:07

S tímto toho dosáhneš jen velmi obtížně, vůbec se to nevyplatí. Pokud nejsi expert na kryptografii, bude to vždy jen klacek.
Jde o to, kde ta PC jsou. Pokud jsou ve stejné síti, není to nijak extra složité a nebudeš potřebovat další server. V zásadě bys na počítači, co bude posílat data otevřel TCP port, počítač, co by je přijímal by se pomocí socketu připojil na ten port jako klient a potom by se ty počítače nějak domluvily. Pochopitelně musíš znát IP toho, co funguje jako server, aby ses na něj mohl připojit.
Pokud jsou v různých sítích, nebo nechceš řešit, co je právě server a co je právě klient, můžeš mít ještě úplně jiný počítač, třeba i úplně mimo tvou síť, který bude ta data přenášet za tebe (PC se připojí na server, řekne mu, komu chce poslat data a server mu je nechá na vyzvednutí). Tady bys ale musel řešit bezpečnost, protože by to probíhalo přes vnější, zlý Internet. Měl bys tudíž použít zabezpečený přenos (skutečný, ne tvůj pokus), nejjednodušší by bylo HTTPS. Ale tohle je už trochu vyšší dívčí popravdě, protože si musíš s tím zabezpečením skutečně vyhrát.
Myslím, že chceš dělat to první, na Googlu hledej klíčové slovo socket. Na YouTube jsou docela dobré tutoriály.
Michal Štěpánek Díky, že jsem mým skvělým doslovným překladem pobavil :P

Editováno 4.4.2017 17:08
Nahoru Odpovědět
4.4.2017 17:07
the cake is a lie
Avatar
Odpovídá na Petr Čech
Pavel Pražák:5.4.2017 15:14

Ok Děkuju moc za rady a je to přesně jak píšeš rozhodně se nechci pachtit přes venkovní připojení Obě PC budou ve stejné síti. I když mohlo by být lákavé použít certifikát na prostupnost, ale se svýma zkušenostmi budu rád když dosáhnu komunikaci mezi 2 PC pomoci vlastní šifrace. Asi se nevyhnu volání o pomoc zde na webu takže třeba uvidíš i pokroky :D.
Ještě jednou díky.

 
Nahoru Odpovědět
5.4.2017 15:14
Avatar
Petr Čech
Redaktor
Avatar
Odpovídá na Pavel Pražák
Petr Čech:5.4.2017 16:05

Upřímně bych ti doporučil (kromě toho, abys používal skutečné šifrování :P ), abys postupoval takto:

  1. Rozchodíš vůbec nějakou komunikaci mezi 2 PC a řádně otestuješ, že se chová, jak chceš.
  2. Vymyslíš si tu šifru, také ji pořádně otestuješ
  3. Pokusíš se šifrovat komunikaci již hotovou, cizí, šifrou, u které je jisté, že funguje
  4. Vlastní šifrovaná komunikace
Nahoru Odpovědět
5.4.2017 16:05
the cake is a lie
Avatar
Odpovídá na Petr Čech
Pavel Pražák:6.4.2017 14:36

Ok, chápu že to asi zní dost nesmyslně, nebo možná trochu zbytečně, ale mám chuť to zkusit. Člověk aspon pochopí jak to funguje a muže se postit do něčeho s realnou kryptografii. Někde šifrování začalo. :)

 
Nahoru Odpovědět
6.4.2017 14:36
Avatar
Petr Čech
Redaktor
Avatar
Odpovídá na Pavel Pražák
Petr Čech:6.4.2017 14:43

No... úplně ne. Skutečná kryptografie je jiná než vytváření vlastních operací, realita je spíš o tom, že víš, kdy a jak použít jakou šifru, kterou už udělal někdo před tebou a ideálně jsi od samotné šifrace na nízké úrovni odstíněn.
Začátek to není špatný, jen tě chci přesvědčit, že pokud nejsi geniální matematik, tvá šifra nemá šanci obstát v reálném světě.

Nahoru Odpovědět
6.4.2017 14:43
the cake is a lie
Avatar
Uživatel byl zablokován:16. ledna 21:13

Šifrování obyčejného textu umožňuje i nástroj na stránkách http://retezce.jednoduse.cz/

 
Nahoru Odpovědět
16. ledna 21:13
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 13 zpráv z 13.