Seite 1 von 1

AES256 CBC Mode-beliebige String´s einfach speichern & laden

Verfasst: 27.02.2014 23:36
von walbus
:)

Re: AES256 CBC Mode-beliebige String´s einfach speichern & l

Verfasst: 27.02.2014 23:55
von STARGÅTE
Sry das ich wieder mein Standardsatz hier ablassen muss aber:
Man kann das Resultat des AESEncoder nicht in einem Strings speichern!

Ein mit AES kodierter Speicher kann NUL-Zeichen enthalten, die einen String sofort abschneiden.

Code: Alles auswählen

AES256CBC_Encoder(@decrypted$,@encrypted$,len_buffer,*key,*iv) ; Encoding
Das geht nicht, sobald in encrypted$ ein NUL-Zeichen kommt, endet der String, egal was danach noch in den Speicher geschrieben wurde.

Das du mit

Code: Alles auswählen

WriteData(0,@encrypted$,len_buffer)
trotzdem den richtigen Speicher in die Datei schreibst ist nicht sichergestellt, denn der Bereich hinter dem NUL-zeichen könnte schon von anderen Operationen genutzt wurde, weil der Bereich für den String nicht dazugehört.

Bitte ändere den Code so ab, dass du an diesen Stellen Memory nutzt.

Nebenbei solltest du nicht das File mit Nummer 0 öffnen, denn falls der Nutzer das schon macht, gibts n Error, lieber #PB_Any nutzen.

Re: AES256 CBC Mode-beliebige String´s einfach speichern & l

Verfasst: 28.02.2014 00:16
von walbus
:)

Re: AES256 CBC Mode-beliebige String´s einfach speichern & l

Verfasst: 28.02.2014 00:17
von walbus
:)

Re: AES256 CBC Mode-beliebige String´s einfach speichern & l

Verfasst: 28.02.2014 00:44
von STARGÅTE
walbus hat geschrieben:Der verschlüsselte String existiert nur sekundär, es wird nicht darauf zugegriffen.
Aber warum willst du dann nicht sicher gehen und ein Memory mit der Länge erstellen und wieder Freigeben?

Ich (und ich ich vermute mal du auch) habe keine Ahnung, wie genau das StringManagement in PB aufgebaut ist.
Der protected string "encrypted$=Space(len_buffer)" wird von dir als Memory space missbraucht. (mag ja noch "ok" sein)
Nun weiß ich allerdings nicht was am Ende beim verlassen der Procedure passiert.
encrypted$ muss ja wieder freigegeben werden.
Speichert PB zu jedem String die Länge selbst noch mal? dann würde es richtig freigegeben werden
oder wird der String bis zu NUL gelesen und freigegeben? dann würde es in deiner Version ein Memoryleck geben.