AES Decodieren

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Kumpu
Beiträge: 27
Registriert: 13.06.2009 16:07
Computerausstattung: Windows 7 Home Premium 64Bit
PB V4.3
Kontaktdaten:

AES Decodieren

Beitrag von Kumpu »

Ich bins mal wieder /:->
Ich habe ein Problem beim dekodieren mit AES. Wenn ich einen String kodiere, dann in einer Datei speichere, später nach erneutem Programmaufruf wieder lese und dekodiere erhalte ich jedes mal unterschiedliche Ergebnisse. Dekodiere ich den String dagegen ohne das Programm erneut aufzurufen, läuft alles richtig.
Den String dekodiere ich so:

Code: Alles auswählen

AESDecoder(@String$, *Buffer, Len(String$), @Passwort$, 128, ?Vector)
Ich vermute jetzt mal dass das @Passwort$ nicht so toll ist, aber ich weiß nicht wie das sonst geht... Könnt ihr mir helfen??
Anfänger!
Windows 7 Home Premium 64Bit
PB V4.3
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: AES Decodieren

Beitrag von ts-soft »

Es wird ein Speicher erwartet, in Byte und nicht in Zeichen. Len sollte man also
tunlichst nicht nutzen sondern StringByteLen + SizeOf(Character), weil das abschliessende
NullByte ist auch zu berücksichtigen.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: AES Decodieren

Beitrag von Mok »

ts-soft hat geschrieben:tunlichst nicht nutzen sondern StringByteLen + SizeOf(Character), weil das abschliessende
NullByte ist auch zu berücksichtigen.
rly?
Dann wird in der Hilfe aber Müll verzapft... http://purebasic.com/documentation/ciph ... coder.html
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: AES Decodieren

Beitrag von ts-soft »

Mok hat geschrieben:rly?
Dann wird in der Hilfe aber Müll verzapft... http://purebasic.com/documentation/ciph ... coder.html
Es wurde ein sehr schlechtes Beispiel gewählt, welches nur im ASCII Modus funktioniert.
Vermutlich damit auch absolute PB-Daus es verstehen :mrgreen:
Ich halte so ein Beispiel für ungeeignet.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Kumpu
Beiträge: 27
Registriert: 13.06.2009 16:07
Computerausstattung: Windows 7 Home Premium 64Bit
PB V4.3
Kontaktdaten:

Re: AES Decodieren

Beitrag von Kumpu »

Das funktioniert bei mir auch nicht :(
Also eigentlich sollte das Beispiel in der Hilfe doch gehn, ich kompiliere doch in Ascii.... Oder?
Kann irgendjemand mal ein Beispiel posten wies richtig geht? Ich hab jetzt schon so ziemlich alles ausprobiert! Bin echt verzweifelt :|
Anfänger!
Windows 7 Home Premium 64Bit
PB V4.3
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: AES Decodieren

Beitrag von ts-soft »

Das Beispiel in der Hilfe sollte im ASCII-Modus funktionieren.
Hier mal eine überarbeitete Version für ASCII- und Unicode Modus:

Code: Alles auswählen

EnableExplicit

Define String$ = "Hello this is a test for AES"

Define *CipheredString   = AllocateMemory(StringByteLength(String$) + SizeOf(Character)) ; Platz für den null-terminierten String
Define *DecipheredString = AllocateMemory(StringByteLength(String$) + SizeOf(Character))  ; mit seiner abschließenden Null

If AESEncoder(@String$, *CipheredString, MemorySize(*CipheredString), ?Key, 128, ?InitializationVector)
  Debug "Ciphered: " + PeekS(*CipheredString)
  
  AESDecoder(*CipheredString, *DecipheredString, MemorySize(*DecipheredString), ?Key, 128, ?InitializationVector)
  Debug "Deciphered: " + PeekS(*DecipheredString)
EndIf

DataSection
  Key:
  Data.b $06, $a9, $21, $40, $36, $b8, $a1, $5b, $51, $2e, $03, $d5, $34, $12, $00, $06
  
  InitializationVector:
  Data.b $3d, $af, $ba, $42, $9d, $9e, $b4, $30, $b4, $22, $da, $80, $2c, $9f, $ac, $41
EndDataSection
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Kumpu
Beiträge: 27
Registriert: 13.06.2009 16:07
Computerausstattung: Windows 7 Home Premium 64Bit
PB V4.3
Kontaktdaten:

Re: AES Decodieren

Beitrag von Kumpu »

Er braucht für SizeOf(Character) eine deklarierte Variable...
Ist das jetzt Chr(0) oder was? Oder wie? :?
Anfänger!
Windows 7 Home Premium 64Bit
PB V4.3
Benutzeravatar
Kumpu
Beiträge: 27
Registriert: 13.06.2009 16:07
Computerausstattung: Windows 7 Home Premium 64Bit
PB V4.3
Kontaktdaten:

Re: AES Decodieren

Beitrag von Kumpu »

Ach, einfach die Größe eines Zeichens hmm?
Anfänger!
Windows 7 Home Premium 64Bit
PB V4.3
Benutzeravatar
Kumpu
Beiträge: 27
Registriert: 13.06.2009 16:07
Computerausstattung: Windows 7 Home Premium 64Bit
PB V4.3
Kontaktdaten:

Re: AES Decodieren

Beitrag von Kumpu »

Funktioniert auch nicht! Da kommt beim dekodieren nur nonsens raus...
Ist es schlimm wenn ich für den Key anstatt ?Key @PW$ nehme? Ich meine wenn ich einen 128 Bit Schlüssel habe dann müsste ich doch eigentlich 16 Zeichen also 16*8 Bits nehmen. Aber wenn ich den Key aus deinem Beispiel nehme kommt auch nur Müll raus. :(
Anfänger!
Windows 7 Home Premium 64Bit
PB V4.3
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: AES Decodieren

Beitrag von ts-soft »

Ich weiß nicht was bei Dir nicht stimmt, obiges Beispiel von mir funktioniert ohne jegliche Änderung.

Also:
Welche PB Version?
Welches OS?
Welche Compilereinstellungen?

Aber davon unabhängig sollte SizeOf(Character) immer funktionieren.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten