Forum: PC-Programmierung AES decodierung in C# Probleme


von Jörg S. (joerg-s)


Lesenswert?

Ich habe verschlüsselte Binär-Dateien. Es sind dabei immer jeweils 16 
Byte verschlüsselt.

Verschlüsselter Block ist z.B.:
81 AE 5A 76 2B FB 3E 0C E2 AE 94 DE 54 A7 A9 43

Der Key ist:
6B 40 35 8F 7E 05 92 71 38 0D 94 B4 BC BE F4 36

Ergebnis muss sein:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Gebe ich das ganze auf dieser Web-Seite ein:
http://aes.online-domain-tools.com/
spuckt der mir einwandfrei das Ergebnis raus. Meine Implementierung in 
C# leider nicht :( Hab schon etliches probiert, leider immer 
irgendwelche Zahlen, aber nicht das Ergebnis.

Mein Code (C# Visual Studio 2010):
1
byte[] Key = new byte[16] { 0x6B, 0x40, 0x35, 0x8F, 0x7E, 0x05, 0x92, 0x71, 0x38, 0x0D, 0x94, 0xB4, 0xBC, 0xBE, 0xF4, 0x36 };
2
byte[] IV = new byte[16] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
3
byte[] TestBlockIn = new byte[16] { 0x81, 0xAE, 0x5A, 0x76, 0x2B, 0xFB, 0x3E, 0x0C, 0xE2, 0xAE, 0x94, 0xDE, 0x54, 0xA7, 0xA9, 0x43 };
4
            
5
byte[] TestBlockDec = new byte[16];
6
7
8
Aes AESCrypto = Aes.Create();
9
AESCrypto.Mode = CipherMode.ECB;
10
AESCrypto.Key = Key;
11
AESCrypto.IV = IV;
12
AESCrypto.KeySize = 128;
13
AESCrypto.BlockSize = 128;
14
AESCrypto.Padding = PaddingMode.None;
15
16
17
ICryptoTransform decryptor = AESCrypto.CreateDecryptor(AESCrypto.Key, AESCrypto.IV);
18
decryptor.TransformBlock(TestBlockIn, 0, TestBlockIn.Length, TestBlockDec, 0);

Mit oder ohne IV macht auch kein Unterschied (also kein richtiges 
Ergebnis).

Was mich etwas wundert ist das ohne PaddingMode.None das Ergebnis 32 
Byte lang ist.

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

Jörg S. schrieb:
> Mit oder ohne IV macht auch kein Unterschied (also kein richtiges
> Ergebnis).

Bei electronic code book gibt es auch keinen initialization vector.

von Jörg S. (joerg-s)


Lesenswert?

Tja, wie gesagt, wenn ich ihn weg lasse ändern sich zwar die 
Ausgangsdaten, aber immer noch nicht korrekt.

von moep (Gast)


Lesenswert?

Wird dir jetzt nur begrenzt weiterhelfen, aber mit der Klasse 
"RijndaelManaged" kommt bei mir das richtige Ergebnis raus.

von Kaj (Gast)


Lesenswert?


von Jörg S. (joerg-s)


Lesenswert?

Was für eine schwere Geburt.. Aber jetzt hab ich es endlich. Man muss 
darauf achten das KeySize und BlockSize VOR dem setzen des Keys 
geschieht. Sonst wird der Key mit Zufallszahlen (?) beschrieben.

1
Aes AESCrypto = Aes.Create();
2
AESCrypto.KeySize = 128;
3
AESCrypto.BlockSize = 128;
4
AESCrypto.Mode = CipherMode.ECB;
5
AESCrypto.Padding = PaddingMode.None;
6
AESCrypto.Key = Key;
7
AESCrypto.IV = IV;

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

Jörg S. schrieb:
> Was für eine schwere Geburt.. Aber jetzt hab ich es endlich. Man muss
> darauf achten das KeySize und BlockSize VOR dem setzen des Keys
> geschieht. Sonst wird der Key mit Zufallszahlen (?) beschrieben.

Ja, Properties sind eine total tolle Idee ;-) Muss einem schon klar 
sein, dass hinter jeder Zuweisung auch ein Funktionsaufruf mit 
entsprechenden Seiteneffekten stecken kann.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.