PDF 941kB - Hochschule Ulm
PDF 941kB - Hochschule Ulm
PDF 941kB - Hochschule Ulm
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Implementierung<br />
Byte-Array<br />
Nutzdaten Hash(Nutzdaten) (Hash(Nutzdaten)).Length<br />
Rückgabewert<br />
Abbildung 33: Aufbau des Rückgabewerts des Methode GetBytesWithChecksum().<br />
Von den Nutzdaten wird ein Hash mit der Hashfunktion SHA256 berechnet. Im<br />
Fall, dass die Nutzdaten ein string statt dem erwarteten Byte-Array sind, wird die<br />
überladene Methode aufgerufen die einen string akzeptiert und den den string in ein<br />
Byte-Array konvertiert. Die Nutzdaten sowie der errechnete Hash wird einem neuen<br />
Byte-Array hinzugefügt. An der letzten Position des Byte-Arrays wird die Länge des<br />
Hashwerts hinzugefügt, wie in Listing 22 zu sehen ist.<br />
1 public byte [] GetBytesWithChecksum ( string message )<br />
2 {<br />
3 return this . GetBytesWithChecksum ( Encoding . UTF8 .<br />
GetBytes ( message ));<br />
4 }<br />
5<br />
6 public byte [] GetBytesWithChecksum ( byte [] data )<br />
7 {<br />
8 SHA256Managed sha = new SHA256Managed ();<br />
9 byte [] checksum = sha . ComputeHash ( data );<br />
10<br />
11 int size = data . Length + checksum . Length + 1;<br />
12<br />
13 byte [] dataWithChecksum = new byte [ size ];<br />
14 data . CopyTo ( dataWithChecksum , 0);<br />
15 checksum . CopyTo ( dataWithChecksum , data . Length );<br />
16 dataWithChecksum [ size - 1] = ( byte ) checksum . Length ;<br />
17<br />
18 return dataWithChecksum ;<br />
19 }<br />
Listing 22: Funktionsweise der GetBytesWithChecksum() Methode.<br />
Anschließend wird dieses Byte-Array zurückgegeben. Dieser Rückgabewert kann dann<br />
verschlüsselt und übertragen werden. Der Empfänger entschlüsselt die Daten und möchte<br />
dann zunächst mit der IsValid() Methode die Gültigkeit validieren. Dazu wird von<br />
den Nutzdaten ein Hash mit der Hashfunktion SHA256 gebildet und dieser mit dem<br />
empfangen Hash in dem Byte-Array verglichen. Sind beide identisch, gibt die Methode<br />
true zurück, wie in Listing 23 gezeigt wird.<br />
65