13.01.2014 Aufrufe

PDF 941kB - Hochschule Ulm

PDF 941kB - Hochschule Ulm

PDF 941kB - Hochschule Ulm

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Implementierung<br />

Aes<br />

- passwordSalt : byte[]<br />

- secretKey : byte[]<br />

+ Aes(byte[])<br />

+ Decrypt(byte[]) : byte[]<br />

+ Encrypt(byte[]) : byte[]<br />

Abbildung 31: Klassendiagramm der Klasse Aes.<br />

Wie zu erkennen ist, beschränkt sich die Klasse auf zwei wesentliche Methoden:<br />

Encrypt() und Decrypt(), die die Daten mit dem an den Konstruktor übergebenen<br />

geheimen Schlüssel verschlüsseln bzw. entschlüsseln. Dem Konstruktor wird ein Byte-<br />

Array als geheimer Schlüssel übergeben, wie in Listing 19 zu sehen ist.<br />

1 public Aes ( byte [] secretKey )<br />

2 {<br />

3 this . secretKey = secretKey ;<br />

4 string temp = null ;<br />

5<br />

6 for ( int i = 0; i < this . secretKey . Length ; i += 3)<br />

7 {<br />

8 temp += this . secretKey [i];<br />

9 }<br />

10<br />

11 this . passwordSalt = Encoding . UTF8 . GetBytes ( temp );<br />

12 }<br />

Listing 19: Konstruktor der Klasse Aes.<br />

Der geheime Schlüssel wird der Klassenvariable secretKey zugewiesen. Aus dem secretKey<br />

wird dann ein Salt gebildet, indem jede dritte Stelle des Byte-Arrays beginnend<br />

mit der Position 0 einem string hinzugefügt wird. Anschließend wird dieser string der<br />

GetBytes() Methode aus dem .NET Framework Namespace System.Text.Encoding.<br />

UTF8 übergeben und der Rückgabewert der Klassenvariable passwordSalt zugewiesen.<br />

Mit der Encrypt() Methode wird ein übergebenes Byte-Array mithilfe der Variable<br />

secretKey und passwordSalt verschlüsselt, wie in Listing 20 zu sehen ist.<br />

1 public byte [] Encrypt ( byte [] message )<br />

2 {<br />

3 using ( AesManaged aes = new AesManaged ())<br />

4 {<br />

5 Rfc2898DeriveBytes deriveBytes = new<br />

Rfc2898DeriveBytes ( secretKey ,<br />

passwordSalt , 1000) ;<br />

6 aes . Key = deriveBytes . GetBytes ( aes . KeySize /<br />

8);<br />

62

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!