NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Verquido
Tvůrce
Avatar
Verquido:27.7.2015 14:09

Zdravím, chtěl bych se zeptat jak na šifrování textu, hledal sem a moc sem toho nenašel :/ Takže díky za každou radu..

1) Šifrování krátkého textu (Například Hesla)
Slyšel sem že na šifrování hesla je nejlepší MD5 a to sem našel do Md5 ale né zpět do normálního textu.

private void getmd5Btn_Click(object sender, EventArgs e)
        {
            tbMd5.Text = GetMD5(tbText.Text);
        }

        public string GetMD5(string textToMD5)
        {
            MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
            md5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(textToMD5));
            byte[] result = md5.Hash;
            StringBuilder str = new StringBuilder();
            for (int i = 1; i < result.Length; i++)
            {
                str.Append(result[i].ToString("x2"));
            }
            return str.ToString();
        }

Tohle je do Md5 ale nevím jak to zase dát zpět do normálního textu. nebo jak to použít k tomu heslu.

2) Šifrování dlouhého textu (Například zprávy)
Na to sem našel nějakou Caesarovu šifru ´, ale nevím jestli je to dobré používat nebo ne popřípadě která šifra je lepší ;)

Díky moc za všechnu pomoc. ;)

 
Odpovědět
27.7.2015 14:09
Avatar
Michal Žůrek - misaz:27.7.2015 19:41

máš o tom dost skreslené představy.

MD5 není šifra, ale otisk. Výhoda otisku je, že se nikdy nedá převést zpátky (na rozdíl od šifry) a toho se využívá u hesel. Když ti někdo ukradne databázi s hesly, tak se k nim nedostane.

Pracuje se s tím tak, že když se uživatel registruje, tak si do databáze uložíš otisk toho hesla a když se přihlašuje, tak si spočítáš nový otisk toho hesla s kterým se chce přihlásit a porovnáváš jenom otisky.

Na větší texy jsou různé šifry. C# jich má spoustu. Cesarova šifra není vůbec bezpečná. Zvol nějakou šifru, kde máš šifrovací klíč nebo něco. C# na to má nástroje v jmenném prostoru System.Securi­ty.Cryptograp­hy, tak se podívej do dokumentace co tam jsou za zajímavosti.

 
Nahoru Odpovědět
27.7.2015 19:41
Avatar
Verquido
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
Verquido:27.7.2015 19:52

Dobře, to chápu.. Tak ještě ale nevím jedno..
Když mám třeba Form s registrací. uživatel zadá heslo a zmáčkne registrovat. Helo se převede na MD5 otisk a... Kam mám ten otisk uložit abych ho později mohl porovnávat při přihlašování? Ukládat ho do Textového souboru se mi zdá špatné a ukládat ho do proměnné... při zavření programu se smaže.. Takže nevím.

 
Nahoru Odpovědět
27.7.2015 19:52
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Verquido
Jan Vargovský:27.7.2015 20:02

Tohle se obvykle ukládá do databáze. V tomto případě to můžeš mít klidně v souboru. Jen ho ulož třeba binárně nebo ještě ten soubor zvlášť zašifruj.

 
Nahoru Odpovědět
27.7.2015 20:02
Avatar
Odpovídá na Verquido
Neaktivní uživatel:27.7.2015 20:02

Ukládat heslo se dá například do konfiguračního souboru aplikace, nebo do nějakého typu textového souboru/xml, samozřejmě pokud bude dostatečně zabezpečené nějakým hashovacím algoritmem (MD5 se už dnes tolik nepoužívá). Ale nějak mně uniká smysl lokální aplikace s přihlašováním a registrací (samozřejmě že existují, ale moc obvyklé to není - autentizace uživatelským jménem a heslem má mnohem větší smysl v aplikacích síťových)

Nahoru Odpovědět
27.7.2015 20:02
Neaktivní uživatelský účet
Avatar
Verquido
Tvůrce
Avatar
Odpovídá na Jan Vargovský
Verquido:27.7.2015 20:09

Jak je to myšleno uložit ho binárně ? :D

 
Nahoru Odpovědět
27.7.2015 20:09
Avatar
Verquido
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Verquido:27.7.2015 20:11

Smysl aplikace v tom moc nehledej.. Já zkouším dělat všechno možné víš. Já se na tom hlavně učím než abych v tom hledal smysl. ;) Teď se jdu pokusit najít nějaký hashovací algoritmus který je teď v módě :P

 
Nahoru Odpovědět
27.7.2015 20:11
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Verquido
Jan Vargovský:27.7.2015 20:13

Jednoduše máš nějaký proud dat (jinými slovy, dlouhý řetězec), který uložíš tak jak je do souboru. Výhodu to má, že si ho můžeš otevřít, ale nic v něm nepřečteš. Musíš si ho zpětně načíst podle přesné signatury. Jakmile tu signaturu ztratíš, tak už si o ty data ve většině případů přišel (pokud ta struktura není moc složitá).

 
Nahoru Odpovědět
27.7.2015 20:13
Avatar
Odpovídá na Verquido
Michal Žůrek - misaz:27.7.2015 20:25

O práci s binárními soubory jsou zde články: http://www.itnetwork.cz/csharp/soubory
Je to 11. díl

 
Nahoru Odpovědět
27.7.2015 20:25
Avatar
Neaktivní uživatel:27.7.2015 20:31

Ještě je možnost uložit to přes PasswordVault přímo do systému, ale pokud vím, tak je to novinka v osmičkách, takže ve dřívějších to nefunguje a taky je to trochu komplikovanější... Kdyžtak informace tady https://msdn.microsoft.com/…rdvault.aspx?… a tady http://stackoverflow.com/…in-windows-8

Nahoru Odpovědět
27.7.2015 20:31
Neaktivní uživatelský účet
Avatar
Verquido
Tvůrce
Avatar
Verquido:27.7.2015 20:41

Takže registrační a přihlašovací heslo uložím do XML nebo textového dokumentu.. A pak potřebují další textový dokument který půjde otevřít jen tehdy když se přihlásím do toho programu.. Mám tedy první fázi.. Jak na tu druhou?

 
Nahoru Odpovědět
27.7.2015 20:41
Avatar
Odpovídá na Verquido
Neaktivní uživatel:27.7.2015 20:55

Nevím, co myslíš tím druhým textovým dokumentem, ale pokud nechceš, aby ti mohl ten soubor s heslem kdokoliv otevřít a změnit, tak ho prostě nějak zašifruj (jak už bylo zmíněno, ne césarovou šifrou, ale nějakou bezpečnější s klíčem, existuje jich opravdu hodně) a heslo získáš při spuštění programu tak, že ten soubor rozšifruješ a vytáhneš si ho od tam.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
27.7.2015 20:55
Neaktivní uživatelský účet
Avatar
Verquido
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Verquido:27.7.2015 21:07

Ano, to vím. Ale mě jde o to aby ten soubor nemohl nikdo ani otevřít. Protože i když je to zašifrované tak to někdo může otevřít a třeba rozšifrovat v jiném programu. nebo SMAZAT.

Editováno 27.7.2015 21:07
 
Nahoru Odpovědět
27.7.2015 21:07
Avatar
Odpovídá na Verquido
Neaktivní uživatel:27.7.2015 21:11

No tak administrátor bude mít vždycky možnost otevřít jakýkoliv soubor, s tím prostě programově nijak nehneš. Od toho jsou taky přístupový práva (a hlavně skupiny podle pravomocí - admin, user, guest atd...), aby prostě obyčejnej uživatel nemohl třeba smazat určitej soubor (nebo ho i otevřít, záleží na nastavení). Vzhledem k tomu, že s tím jen blbneš, bych to buď nechal být, nebo se teda poohlédnul po trochu jiném řešení, například to PasswordVault, nebo uložení a autentizace přes server (není to tak těžký) a tak...

Nahoru Odpovědět
27.7.2015 21:11
Neaktivní uživatelský účet
Avatar
Verquido
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Verquido:27.7.2015 21:16

Dobře ;) Tak já to nebudu řešit. Ale řekni mi tedy poslední ;)

Existuje program na zamykání souborů. Přetáhneš soubor do programu zahesluješ a soubor je v tom programu ale nikde jinde. To udělaly jak? :D

 
Nahoru Odpovědět
27.7.2015 21:16
Avatar
Odpovídá na Verquido
Neaktivní uživatel:27.7.2015 21:31

No, tohle jsem sice nijak zjišťoval, ale podle mě si ten program ten soubor prvně přesune na nějaký svoje úložiště v počítači (pořád tam je, jen jinde a asi i skrytej) a potom zašifruje s heslem.

Nahoru Odpovědět
27.7.2015 21:31
Neaktivní uživatelský účet
Avatar
Odpovídá na Verquido
Jakub Lásko[Saarix]:29.7.2015 10:10

Data nikdy nezmizí, to že se z pohledu programu zdá, že s k datům nedostaneš, tak to ještě neznamená že to nejde :-)
To aby je nikdo nesmazal bych řešil tak, že pokud je někdo smaže, tak se třeba vytvoří nové defaultní. A proti tomu otevření prosté šifrování jak tu už psali :-)

Nahoru Odpovědět
29.7.2015 10:10
Časem je vše možné.
Avatar
Jakub Lásko[Saarix]:29.7.2015 10:11

Btw. u jakékoliv hry si můžeš smazat polovinu souborů, ale kdo by to řešil?

Nahoru Odpovědět
29.7.2015 10:11
Časem je vše možné.
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 18 zpráv z 18.