Ähm - es geht ungefähr so: einen Puffer aus dem FileStream lesen und verschlüsseln.
meinetwegen etwa so:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| var rfs,wfs:TFileStream; var iRead,I:INTEGER; var pIn,pOut,C1,C2:PCHAR; var B:BYTE; const BufSize = 16384; // 16kb Größe des Pufferfensters begin rfs:=tfilestream.create(sFileName,fmOpenRead or fmShareDenyWrite); wfs:=tfilestream.create(sOutput,fmCreate); getmem(pIn,BufSize+1); getmem(pOut,BufSize+1); repeat iRead:=RFS.READ(pIn^,BufSize); C1:=pIn; C2:=pOut; FOR I:=1 TO iRead DO BEGIN B := BYTE(C1^); //////////////////// hier Ver oder Entschlüsseln des Bytes ablegen des neuen Werts wieder in B //////////////////// C2^:= CHAR(B); INC(C1); INC(C2); END; WFS.WRITE(pOut^,iRead); until (RFS.POSITION >= RFS.SIZE); freemem(pOut,BufSize+1); freemem(pIn,BufSize+1); wfs.free; rfs.free; |
Der Code sollte funktionieren - ich kann zum Arbeiten mit Pointern und PChars nur Raten - die Kompatibilität zur WinAPI und die Geschwindigkeit, mit der die Operationen ausgeführt werden, sind einfach überwältigend!