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
Martin Križan:17.3.2016 18:21

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.3.2016 18:21
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Martin Križan
Petr Čech:17.3.2016 18:38

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.3.2016 18:38
the cake is a lie
Avatar
Odpovídá na Martin Križan
sadlomaslox25:17.3.2016 20:12

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.3.2016 20:12
Avatar
Martin Križan:17.3.2016 21:26

Ď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
17.3.2016 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.