Problem bei AES-Verschlüsselung
Verfasst: 13.04.2011 19:29
Ich habe mir mal 2 Codes zurechtgebastelt die beide ziemlich ähnlich sind. Beim 2. Code kommt nur noch eine kleinigkeit dazu. Erstmal kommen die Codes und dann mein Problem
Dieser Code Funktioniert einwandfrei aber jetzt kommt der andere Code:
Hier wird beim Decodieren ein falscher Wert zurückgegeben, wobei ich keine Ahnung hab wieso...
Liegt vieleicht an meinem fehlenden Verständniss für die Funktionsweise von AES.
Ich hab schon ein bischen was nachgeprüft und in der Prozedur "DeAES" entspricht der String in "ToDecode$" dem selben wie "AESCode$" in der Prozedur "EnAES" also warum wird beim Decodieren im 1. Code der richtige String zurückgegeben, beim 2. allerdings nicht?

Code: Alles auswählen
Procedure.s EnAES(String$)
While Len(String$) < 16
String$+Chr(10)
Wend
*CipheredString = AllocateMemory(Len(String$)+1)
If AESEncoder(@String$, *CipheredString, Len(String$), ?Key, 256, ?Init)
Output$ = PeekS(*CipheredString)
EndIf
ProcedureReturn Output$
EndProcedure
Procedure.s DeAES(String$)
*DecipheredString = AllocateMemory(Len(String$)+1)
If AESDecoder(@String$, *DecipheredString, Len(String$), ?Key, 256, ?Init)
Output$ = PeekS(*DecipheredString)
EndIf
While Right(Output$,1) = Chr(10)
Output$ = Left(Output$,Len(Output$)-1)
Wend
ProcedureReturn Output$
EndProcedure
Debug EnAES("kleiner Text")
Debug DeAES(EnAES("kleiner Text"))
DataSection
Key:
Data.b $06, $a9, $21, $40, $36, $b8, $a1, $5b, $51, $2e, $03, $d5, $34, $12, $00, $06
Init:
Data.b $3d, $af, $ba, $42, $9d, $9e, $b4, $30, $b4, $22, $da, $80, $2c, $9f, $ac, $41
EndDataSection
Code: Alles auswählen
Procedure.s EnAES(String$)
While Len(String$) < 16
String$+Chr(10)
Wend
*CipheredString = AllocateMemory(Len(String$)+1)
If AESEncoder(@String$, *CipheredString, Len(String$), ?Key, 256, ?Init)
AESCode$ = PeekS(*CipheredString)
EndIf
For n = 1 To Len(AESCode$)
Output$ + Str(Asc(Mid(AESCode$,n,1))) + " "
Next
ProcedureReturn Output$
EndProcedure
Procedure.s DeAES(String$)
For n = 1 To CountString(String$," ")
ToDecode$ + Chr(Val(StringField(String$,n," ")))
Next
*DecipheredString = AllocateMemory(Len(ToDecode$)+1)
If AESDecoder(@String$, *DecipheredString, Len(ToDecode$), ?Key, 256, ?Init)
Output$ = PeekS(*DecipheredString)
EndIf
While Right(Output$,1) = Chr(10)
Output$ = Left(Output$,Len(Output$)-1)
Wend
ProcedureReturn Output$
EndProcedure
Debug EnAES("kleiner Text")
Debug DeAES(EnAES("kleiner Text"))
DataSection
Key:
Data.b $06, $a9, $21, $40, $36, $b8, $a1, $5b, $51, $2e, $03, $d5, $34, $12, $00, $06
Init:
Data.b $3d, $af, $ba, $42, $9d, $9e, $b4, $30, $b4, $22, $da, $80, $2c, $9f, $ac, $41
EndDataSection
Liegt vieleicht an meinem fehlenden Verständniss für die Funktionsweise von AES.
Ich hab schon ein bischen was nachgeprüft und in der Prozedur "DeAES" entspricht der String in "ToDecode$" dem selben wie "AESCode$" in der Prozedur "EnAES" also warum wird beim Decodieren im 1. Code der richtige String zurückgegeben, beim 2. allerdings nicht?