# Frage zu AES-Verschlüsselung C#



## Der"C"Mensch (9. April 2012)

*Frage zu AES-Verschlüsselung C#*

Hey Com,

ich versuche mich derzeit an einem Verschlüsselungsprogramm. Das Programm startet doch dann kommt die Fehlermeldung, bei:


```
aes.Key = Encoding.UTF8.GetBytes(key);
```
 -> Der angegebene Schlüssel hat keine gültige Größe für diesen Algorithmus.

Der "key" wird vom Benutzer als Passwort eingegeben, doch er hat nicht die richtige Größe, wie kann ich den denn so ändern, dass er die richtige Größe hat und beim Decrypten auch funktionsfähig ist? 

Wäre euch echt dankbar für einen Tipp 

vlg


----------



## Koyote (10. April 2012)

*AW: Frage zu AES-Verschlüsselung C#*

Ich brauche in Visual Basic eine AES verschl. habe dann gegeooglet und einen Code gefunden, mich informiert und ihn dann auch verstanden. Das ganze dann noch in ne Funktion geschrieben und das läuft.


```
Private Function Encrypt(ByVal quellcode As String) As String
        Dim rd As New RijndaelManaged
        Dim md5 As New MD5CryptoServiceProvider
        Dim key() As Byte = md5.ComputeHash(Encoding.UTF8.GetBytes(txtbox_encryptpw.Text))
        md5.Clear()
        rd.Key = key
        rd.GenerateIV()
        Dim iv() As Byte = rd.IV
        Dim ms As New MemoryStream
        ms.Write(iv, 0, iv.Length)
        Dim cs As New CryptoStream(ms, rd.CreateEncryptor, CryptoStreamMode.Write)
        Dim data() As Byte = System.Text.Encoding.UTF8.GetBytes(quellcode)
        cs.Write(data, 0, data.Length)
        cs.FlushFinalBlock()
        Dim encdata() As Byte = ms.ToArray()
        Code = Convert.ToBase64String(encdata)
        cs.Close()
        rd.Clear()
        Return Code
    End Function
```

Du musst natürlich noch die benötigten Sachen importieren.
Ich hoffe mal du kannst mit dem VB Code etwas anfangen und es auf C# übertragen.

Gruß Tim


----------



## pyro539 (10. April 2012)

*AW: Frage zu AES-Verschlüsselung C#*

AES kann nur mit Schlüssellängen von 128, 192 oder 256 Bit umgehen. Eventuell musst du den Schlüssel verlängern oder verkürzen. 

Ich gehe jetzt davon aus, dass deine aes Variable auch vom Typ RijndaelManaged ist, wie das Beispiel in Post #2. Wenn du bei diesem Objekt die .Key-Eigenschaft benutzt und da einen Wert zuweist, dann musst du auch genau die Keysize einhalten. In der MSDN steht:


> Die gültigen Schlüsselgrößen hängen von der jeweiligen Implementierung des symmetrischen Algorithmus ab und sind in der LegalKeySizes-Eigenschaft aufgelistet.



Verwende die GenerateKey-Methode, die automatisch den Key verlängert/verkürzt.


----------



## Crymes (10. April 2012)

*AW: Frage zu AES-Verschlüsselung C#*

Check einfach mit einer if Schleife ab, ob der Schlüssel 256 Bit hat, sonst hängst du noch (mit einer for Schleife) ein paar Nullen ran.


----------

