der String ist nicht mehr leserlich, warum?
Code: Alles auswählen
; ------------------------------------------------
; Verschlüsseln eines Strings mit InitializationVector
; ------------------------------------------------
Global FileNr
Global FileKey.s = "D:\[Pure@KEY]\Velindos_KEY.key"
Global StringMemorySize
Global *CipheredString
Global *DecipheredString
; ------------------------------------------------
InitializationCodecString$ = "Wir testen den decoder mit einigen Eingaben etx..."
; ------------------------------------------------
If FileSize(FileKey) <> -1
; Debug "Delete"
DeleteFile(FileKey,#PB_FileSystem_Force)
EndIf
; =============================================
;{ HIER WÄRE SPEICHERN
; =============================================
; Platz für den null-terminierten String mit seiner abschließenden Null
StringMemorySize = StringByteLength(InitializationCodecString$) + SizeOf(Character)
; =============================================
; MEMORY
*CipheredString = AllocateMemory(StringMemorySize)
*DecipheredString = AllocateMemory(StringMemorySize)
; ------------------------------------------------
If AESEncoder(@InitializationCodecString$, *CipheredString, MemorySize(*CipheredString), ?Key, 128, ?InitializationVector)
; ------------------------------------------------
; Warning: wird beim ersten Null-Byte angehalten, nur für Demo-Zwecke
Debug "Ciphered: "+PeekS(*CipheredString)
; =============================================
; ------------------------------------------------
FileNr = CreateFile(#PB_Any, FileKey)
WriteStringN(FileNr, PeekS(*CipheredString, -1))
; WriteStringN(FileNr, PeekS(*CipheredString, -1, #PB_Ascii), #PB_Ascii)
SetFileAttributes(FileKey, #PB_FileSystem_ReadOnly)
CloseFile(FileNr)
; ------------------------------------------------
FreeMemory(*CipheredString)
FreeMemory(*DecipheredString)
; ------------------------------------------------
;}
; =============================================
;{ HIER WÄRE LOADED
; ------------------------------------------------
If FileSize(FileKey)
; ------------------------------------------------
If ReadFile(0,FileKey)
; sich wiederholende Schleife bis das Ende der Datei ("end of file") erreicht ist
While Eof(0) = 0
; Key Laden
DecodeString$ = ReadString(0,#PB_Ascii)
Debug "ReadString: "+DecodeString$
Wend
CloseFile(0)
Else
Beep_(1200,350)
EndIf
EndIf
; =============================================
; StringMemorySize = Len(DecodeString$) + SizeOf(Character)
StringMemorySize = StringByteLength(DecodeString$) + SizeOf(Character)
; ------------------------------------------------
*CipheredString = AllocateMemory(StringMemorySize)
*DecipheredString = AllocateMemory(StringMemorySize)
; ------------------------------------------------
PokeS(*CipheredString, DecodeString$ ,StringMemorySize, #PB_Ascii)
; ------------------------------------------------
; =============================================
AESDecoder(*CipheredString, *DecipheredString, StringByteLength(DecodeString$) + SizeOf(Character), ?Key, 128, ?InitializationVector)
Key_String$ = PeekS(*DecipheredString)
; =============================================
Debug "Deciphered: " + Key_String$
; =============================================
;}
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
; ------------------------------------------------