szyfrowanie string'ów

0

Witam,
Macie/znacie może jakiś sprawdzony, bezpieczny algorytm szyfrujący i deszyfrujący??:)
Chce zrobić formatke z 2 buttonami i 1 textboxem - 1 button miałby kodować text z textboca - a 2 dekodować... Docelowo chciałbym to wykorzystać do szyfrowania danych w pliku (loginy do bazy)...
Możecie mi jakoś pomóc - może jakiś przykład czy coś ??:)

z góry dzięki za pomoc,
pozdrawiam North:)

0

Loginy, jeśli można, to zalecam hashować. MD5CryptoServiceProvider z System.Security.Cryptography będzie tu pomocny (ewentualnie SHA1 czy coś innego).

W tej samej przestrzeni znajdziesz też wszystko co potrzebne do kodowania.

0

tylko jak zakoduje MD5 to nie odkoduje :/ a ja potrzebuje możliwość kodowaina i dekodowania.... :/

0

W takim razie np. AES, o ile pamietam jest w tej samej przestrzeni.

//edit
w kregach c# i msdn znany jako Rijndael :)

pozdrawiam
johny

0

No i znalazłem ten algorytm:

private void button1_Click(object sender, EventArgs e)
        {
            string original = "To jest testowy string!!!!";
            string roundtrip;
            ASCIIEncoding textConverter = new ASCIIEncoding();
            RijndaelManaged myRijndael = new RijndaelManaged();
            byte[] fromEncrypt;
            byte[] encrypted;
            byte[] toEncrypt;
            byte[] key;
            byte[] IV;

            myRijndael.GenerateKey();
            myRijndael.GenerateIV();

            key = myRijndael.Key;
            IV = myRijndael.IV;

            ICryptoTransform encryptor = myRijndael.CreateEncryptor(key, IV);

            MemoryStream msEncrypt = new MemoryStream();
            CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write);

            toEncrypt = textConverter.GetBytes(original);

            csEncrypt.Write(toEncrypt, 0, toEncrypt.Length);
            csEncrypt.FlushFinalBlock();

            encrypted = msEncrypt.ToArray();
            ICryptoTransform decryptor = myRijndael.CreateDecryptor(key, IV);

            MemoryStream msDecrypt = new MemoryStream(encrypted);
            CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read);

            fromEncrypt = new byte[encrypted.Length];

            csDecrypt.Read(fromEncrypt, 0, fromEncrypt.Length);

            roundtrip = textConverter.GetString(fromEncrypt);

            textBox1.Text = original;
            textBox2.Text = XXXXXXXXXXXXXXXXXX
        }

Kodowany ciąg znaków to: "To jest testowy string!!!!" a co jest zakodowaną wartością??


http://pl.wikipedia.org/wiki/Rijndael - znalazłem w opisie że ten algorytm może szyfrować 128, 192 i 256 bitów - w ilu bitach szyfruje ten kod??

0

Tak jak w kazdym takim algorytmie odpowiedzia jest ciag bajtow (wejscie rowniez :))

Mozesz wiec zapisac jak leci, mozesz przekonwertowac na hex'a, co bedzie wygodniej.

znalazłem w opisie że ten algorytm może szyfrować 128, 192 i 256 bitów - w ilu bitach szyfruje ten kod??

Wspiera kazda wersje - wlasciwosc KeySize. Wszystko napisane w msdn :)

pozdrawiam
johny

0

ja się dopiero ucze C# a Ty mi tu z hex'ami wyskakujesz;)

wiesz może która zmienna przechowuje zakodowany tekst??;)

0

Rowniez w msdn jest jasniejszy przyklad:

    public static void EncryptTextToFile(String Data, String FileName, byte[] Key, byte[] IV)
    {
        try
        {
            // Create or open the specified file.
            FileStream fStream = File.Open(FileName, FileMode.OpenOrCreate);

            // Create a new Rijndael object.
            Rijndael RijndaelAlg = Rijndael.Create();

            // Create a CryptoStream using the FileStream 
            // and the passed key and initialization vector (IV).
            CryptoStream cStream = new CryptoStream(fStream,
                RijndaelAlg.CreateEncryptor(Key, IV),
                CryptoStreamMode.Write);

            // Create a StreamWriter using the CryptoStream.
            StreamWriter sWriter = new StreamWriter(cStream);

            try
            {
                // Write the data to the stream 
                // to encrypt it.
                sWriter.WriteLine(Data);
            }
            catch (Exception e)
            {
                Console.WriteLine("An error occurred: {0}", e.Message);
            }
            finally
            {
                // Close the streams and
                // close the file.
                sWriter.Close();
                cStream.Close();
                fStream.Close();
            }
        }
        catch (CryptographicException e)
        {
            Console.WriteLine("A Cryptographic error occurred: {0}", e.Message);
        }
        catch (UnauthorizedAccessException e)
        {
            Console.WriteLine("A file error occurred: {0}", e.Message);
        }

    }

z ktorego wynika, ze wystarczy zapisac do stworzonego strumienia CryptoStream dane, zeby je zaszyfrowac. W takim razie odczytaj pozniej z niego i dostaniesz prawdopodobnie zaszyfrowany tekst. Zeby sie przekonac, ze odczytales wlasciwe pozniej je zdeszyfruj :)

pozdrawiam
johny

0

qurcze, chyba sobie z tym nie poradze...:/

0

wiecie może w czym jest przechowywana zakodowana wartość tego stringu (kod z góry) - i jak to wyświetlić w messageBoxie??

dzięki za ten 2 kod - tylko tego Twojego <ort>w ogóle </ort>nie kumam :(

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0