Diskuze: c# Šifrování textu.

C# .NET .NET (C# a Visual Basic) c# Šifrování textu. American English version English version

Avatar
Paranormal
Redaktor
Avatar
Paranormal:

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
„Když toho moc neumíme tak jsme na nejlepší pozici se něčemu naučit.“
Avatar
Michal Žůrek (misaz):

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  +4 27.7.2015 19:41
Nesnáším {}, proto se jim vyhýbám.
Avatar
Paranormal
Redaktor
Avatar
Odpovídá na Michal Žůrek (misaz)
Paranormal:

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
„Když toho moc neumíme tak jsme na nejlepší pozici se něčemu naučit.“
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Paranormal
Jan Vargovský:

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 Paranormal
Jakub Šárník:

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
Avatar
Paranormal
Redaktor
Avatar
Odpovídá na Jan Vargovský
Paranormal:

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

Nahoru Odpovědět 27.7.2015 20:09
„Když toho moc neumíme tak jsme na nejlepší pozici se něčemu naučit.“
Avatar
Paranormal
Redaktor
Avatar
Odpovídá na Jakub Šárník
Paranormal:

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
„Když toho moc neumíme tak jsme na nejlepší pozici se něčemu naučit.“
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Paranormal
Jan Vargovský:

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  +1 27.7.2015 20:13
Avatar
Odpovídá na Paranormal
Michal Žůrek (misaz):

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
Nesnáším {}, proto se jim vyhýbám.
Avatar
Jakub Šárník:

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  +1 27.7.2015 20:31
Avatar
Paranormal
Redaktor
Avatar
Paranormal:

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
„Když toho moc neumíme tak jsme na nejlepší pozici se něčemu naučit.“
Avatar
Odpovídá na Paranormal
Jakub Šárník:

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í
+1 bodů
Řešení problému
 
Nahoru Odpovědět 27.7.2015 20:55
Avatar
Paranormal
Redaktor
Avatar
Odpovídá na Jakub Šárník
Paranormal:

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
„Když toho moc neumíme tak jsme na nejlepší pozici se něčemu naučit.“
Avatar
Odpovídá na Paranormal
Jakub Šárník:

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
Avatar
Paranormal
Redaktor
Avatar
Odpovídá na Jakub Šárník
Paranormal:

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
„Když toho moc neumíme tak jsme na nejlepší pozici se něčemu naučit.“
Avatar
Odpovídá na Paranormal
Jakub Šárník:

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
Avatar
Odpovídá na Paranormal
Jakub Lásko[Saarix]:

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]:

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.