Avatar billede Slettet bruger
15. maj 2009 - 12:39 Der er 10 kommentarer og
2 løsninger

Kryptering

Hej eksperter,

Indeholder C# en indbygget krypteringsmotor, og hvordan anvendes denne?
Avatar billede j4k0b Nybegynder
15. maj 2009 - 13:08 #1
følger lige med
Avatar billede sirius Nybegynder
15. maj 2009 - 14:39 #2
System.Security.Cryptography indeholder en masse klasser til kryptering.

Hvad vil du gerne kryptere?
Avatar billede arne_v Ekspert
15. maj 2009 - 14:55 #3
.NET understoetter alle de gaengse krypteringer: AES, 3DES etc..

Simpelt AES eksempel:

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

public class MainClass
{
    private static Encoding utf = new UTF8Encoding();
    private static Rijndael aes = new RijndaelManaged();
    private static byte[] iv = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
    public static string Encrypt(string plain, string key)
    {
        ICryptoTransform encrypt = aes.CreateEncryptor(utf.GetBytes(key), iv);
        return Convert.ToBase64String(encrypt.TransformFinalBlock(utf.GetBytes(plain), 0, utf.GetByteCount(plain)));
    }
    public static string Decrypt(string cipher, string key)
    {
        ICryptoTransform decrypt = aes.CreateDecryptor(utf.GetBytes(key), iv);
        byte[] b = Convert.FromBase64String(cipher);
        return utf.GetString(decrypt.TransformFinalBlock(b, 0, b.Length));
    }
    public static void Main(string[] args)
    {
        Console.WriteLine(Encrypt("Dette er en test !", "hemmeligabcdefgh12345678"));
        Console.WriteLine(Decrypt(Encrypt("Dette er en test !", "hemmeligabcdefgh12345678"), "hemmeligabcdefgh12345678"));
    }
}
Avatar billede Slettet bruger
15. maj 2009 - 15:02 #4
Tak :) Jeg tror, jeg kan hitte ud af det herfra (ikke at der er meget mere at undersøge).
Svar søges fra sirius og Arne.
Avatar billede arne_v Ekspert
15. maj 2009 - 15:08 #5
Til generel symmetrisk kryptering vil jeg anbefale AES - det er hvad man bruger idag.

Og et svar fra mig.
Avatar billede Slettet bruger
15. maj 2009 - 15:13 #6
Jeps. Lige en ting til:
byte[] iv = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
Hvad gør denne vektor helt præcist?
Avatar billede arne_v Ekspert
15. maj 2009 - 15:24 #7
Det er en IV vektor.

Den bruges som en del af krypteringen.

Reglerne er:
* den behoever ikke vaere hemmelig - du kan vedlaegge den i klar tekst hvis det skal vaere
* men hvis du vil have maksimal sikkerhed i algoritmen saa skal den vaere forskellig fra gang til gang

Jeg er ikke overbevist om at problemet med samme IV er specielt stort i de mere praktiske sammenhaenge. Men matematisk set leaker der information, hvis den genbruges.

http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation
Avatar billede sirius Nybegynder
15. maj 2009 - 15:32 #8
et lille svar
Avatar billede Slettet bruger
15. maj 2009 - 15:33 #9
Men hvordan kan det så være, at den ikke er definerende for nøglens længde?
Avatar billede arne_v Ekspert
15. maj 2009 - 15:58 #10
IV er block size ikke key size.
Avatar billede Slettet bruger
15. maj 2009 - 16:01 #11
Ah, ja, det er jo blokkene, der skiftes ud. Tak :)
Avatar billede clausc Nybegynder
19. maj 2009 - 15:42 #12
Et par ekstra gratis kommentarer til arnes fine svar:
AES er den anbefalede symmetriske metode; 3DES (EDE) bruges dog rigtig mange steder, og kan - afhængig af dit konkrete behov - være et bedre valg. Hvis ikke du skal interface med andre, så brug AES.

Hvis man bruger en IV pre-pender man den ofte til det krypterede data; dvs et byte[] som er [IV][krypterede data]

IV'en bør du fylde med tilfældige data fra RNGCryptoServiceProvider; Random()-klassen er slet slet ikke god nok til crypto formål.

Hvis data er større end blok-størrelsen bør du bruge CBC-mode (ja, det er default; men det skader ikke at være eksplicit om det; ditto padding-mode for den sags skyld)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester