Diskuze: Kryptovanie

C# .NET .NET (C# a Visual Basic) Kryptovanie American English version English version

Avatar
Martin Križan:

Dobrý deň, v c# som sa začal riešiť kryptovanie. Pozeral som dosť examplov/tutorialov ale vo všetkých bol kód/key generovaný kryptovaciou knižnicou, ako napríklad tu:

using System;
using System.Security.Cryptography;
using System.Text;

class EncryptorExample
{
     private static string quote =
         "Things may come to those who wait, but only the " +
         "things left by those who hustle. -- Abraham Lincoln";

     public static void Main()
     {
         AesCryptoServiceProvider aesCSP = new AesCryptoServiceProvider();

         aesCSP.GenerateKey();
         aesCSP.GenerateIV();
         byte[] encQuote = EncryptString(aesCSP, quote);

         Console.WriteLine("Encrypted Quote:\n");
         Console.WriteLine(Convert.ToBase64String(encQuote));

         Console.WriteLine("\nDecrypted Quote:\n");
         Console.WriteLine(DecryptBytes(aesCSP, encQuote));
     }

     public static byte[] EncryptString(SymmetricAlgorithm symAlg, string inString)
     {
         byte[] inBlock = UnicodeEncoding.Unicode.GetBytes(inString);
         ICryptoTransform xfrm = symAlg.CreateEncryptor();
         byte[] outBlock = xfrm.TransformFinalBlock(inBlock, 0, inBlock.Length);

         return outBlock;
     }

     public static string DecryptBytes(SymmetricAlgorithm symAlg, byte[] inBytes)
     {
         ICryptoTransform xfrm = symAlg.CreateDecryptor();
         byte[] outBlock = xfrm.TransformFinalBlock(inBytes, 0, inBytes.Length);

         return UnicodeEncoding.Unicode.GetString(outBlock);
     }
}

Ja však chcem aby som ten key mohol použiť aký chcem(napr. zo stringu).
Viete dakto ako by sa to dalo spraviť?

 
Odpovědět 17. března 18:21
Avatar
Odpovídá na Martin Križan
Petr Čech (czubehead):

Docela jsem tuto problematiku rozpracoval na Githubu: https://github.com/…d/csharp-aes
Pokud není něco jasné, neváhej se zeptat.

Nahoru Odpovědět 17. března 18:38
Why so serious? -Joker
Avatar
Odpovídá na Martin Križan
sadlomaslox25:

podle dokumentace aes podporuje 3 delky klicu 128, 192 a 256 bitu. pokud chces pouzit vlastni klic napr. nejaky retezec tak nejakym zpusobem musis prevest retezce na fixni pocet bitu. naivni implementace by byla ze napr. retezec "abc" prevedes pomoci nejakeho encodingu na posloupnost bitu a zbytek do 128 nebo 256 doplnis nulami. realne bych pouzil hash funkci ktera vrati pro libovolne dlouhe string/heslo vzdy pole bytu o fixni velikosti. napr. trida SHA256.

 
Nahoru Odpovědět 17. března 20:12
Avatar
Martin Križan:

Ďakujem vám za odpovede, veľmi mi pomohli.
Petr Čech možno by bolo dobré o tom urobiť článok, podľa mňa to zaujíma dosť ľudí a nevidel som to nikde jednoducho a prakticky spracované.

 
Nahoru Odpovědět  +1 17. března 21:26
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 4 zpráv z 4.