Zum Entschlüsseln von Daten wurden in einem altem Pascal-Programm folgender Code verwendet. Kann mir jemand Helfen daraus eine Funktion zu basteln?
Es muss bei folgenden HEX String "82 6a 55 b0 3b 63" "THOMAS" raus kommen.
Code:
(*******************************************************************************
PROCEDURE Crypt (dataPtr: AdsMem; 8 [bp] --> es:di 4 Byte Pointer
dataLen: WORD 6 [bp] --> cx 2 Byte Laenge
); EXTERN;
*******************************************************************************)
Crypt PROC FAR
push bp
mov bp, sp
call near TestRandom
push cx
mov cx, 6 [bp] ; cx:= dataLen
jcxz @crReturn
push es
push di
les di, 8 [bp] ; es:di:= dataPtr
shr cx, 1 ; immer 2 Bytes werden ver/entSchlüsselt
@crLoop:
call near NextRand;
xor ax, Word Ptr es:[di]
stosW ; es:[di]:= verschluesseltes Word
dec cx
jnz @crLoop
pop di
pop es
@crReturn:
pop cx
mov sp, bp
pop bp
retf 6 ; dataPtr, dataLen wegwerfen
Crypt ENDP